【发布时间】:2020-01-18 02:03:24
【问题描述】:
我在 IIFE 中使用async 函数。
但是当我通过 rest api 调用运行这段代码时,
它说
UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。
我在“for循环”中创建了try和catch。
在这种情况下,我怎样才能做出正确的尝试捕获?
(async () => {
for (let i = 0; i < keywordResult.places.length; i += 1) {
try {
const transformKeywordResult = await rp({
method: 'GET',
uri:
'',
qs: {
query: query
},
json: true
});
let addrInfo = transformKeywordResult.addresses[i];
if (!addrInfo.addressElements[8].longName) {
addrInfo.addressElements[8].longName = '';
}
searchResult.push(transformKeywordResult);
} catch (error) {
return res.status(200).json({
success: false,
code: 500,
msg: 'Internal Server Error',
err: error,
pos: 0
});
}
}
return res.send(searchResult);
})();
【问题讨论】:
-
该代码到底抛出了什么?
await应该被正确捕获 -
您的查询在每次循环迭代中都是相同的。为什么不抓取一次并迭代数据呢?
标签: javascript node.js