我称这个函数为:

let bing_web_search = function(search) { 
    let searchEncoded = encodeURIComponent(search); 
    return axios.get( 
        'https://api.cognitive.microsoft.com/bing/v7.0/search?q=' + searchEncoded + '+site:https://learn.microsoft.com/en-us/azure/&mkt=en-us', { 
            headers: { 'Ocp-Apim-Subscription-Key' : process.env.BING_SUBSCRIPTION_KEY } 
        }) 
    .then(function(response) { 
        return response.data.webPages; 
    }) 
    .catch(function(error) { 
        console.log(error) 
    }); 
} 

...在我的 Controller 的这个函数内:

router.get('/search/results', async function(req, res) { 
    let searchResults = bing.bing_web_search(req.query.search_query); 
    let test = await searchResults.then(function(results) { 
        return results 
    }); 
 
    res.render('../views/results', { 
        test : test 
    }); 
}) 

我在 Axios 文档中没有看到必须使用 async/await,如果没有它们我就无法让它工作。我不断收到 Promise {待处理},因此为什么我使用 then() 两次,认为第二个 then() 会解开 Promise。如果没有异步/等待,这可能吗?

请您参考如下方法:

您不需要使用 async/await。你可以像这样做你想做的事:

router.get('/search/results', function(req, res) { 
    const searchResults = bing.bing_web_search(req.query.search_query); 
 
    searchResults.then(function(results) { 
        res.render('../views/results', { 
            test : results 
        }); 
    }); 
 
}); 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!