Javascript 如何在IIFE中使用异步函数来使用try、catch
我在iLife中使用Javascript 如何在IIFE中使用异步函数来使用try、catch,javascript,node.js,Javascript,Node.js,我在iLife中使用async函数但是当我通过RESTAPI调用运行此代码时, 上面说 未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺 我在“for loop”的内部制作了try和catch。 在这种情况下,我如何才能做出正确的尝试捕捉 (async () => { for (let i = 0; i < keywordResult.places.length
async
函数但是当我通过RESTAPI调用运行此代码时,
上面说 未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺 我在“for loop”的内部制作了
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);
})();
(异步()=>{
for(设i=0;i
尝试关闭Try块中的for循环,因为如果Try块之外发生任何错误,则没有catch块来保存错误
( async () => {
try {
for ( let i = 0; i < keywordResult.places.length; i += 1 ) {
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 );
}
return res.send( searchResult );
} catch ( error ) {
return res.status( 200 ).json( {
success: false,
code: 500,
msg: 'Internal Server Error',
err: error,
pos: 0
} );
}
} )();
(异步()=>{
试一试{
for(设i=0;i
尝试关闭Try块中的for循环,因为如果Try块之外发生任何错误,则没有catch块来保存错误
( async () => {
try {
for ( let i = 0; i < keywordResult.places.length; i += 1 ) {
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 );
}
return res.send( searchResult );
} catch ( error ) {
return res.status( 200 ).json( {
success: false,
code: 500,
msg: 'Internal Server Error',
err: error,
pos: 0
} );
}
} )();
(异步()=>{
试一试{
for(设i=0;i
您的rp
s被正确捕获,但有一个承诺没有明显的错误捕获,那就是您的生活:
(async () => {
// do some stuff, including async
)();
顺便说一句,它可以抛出自己的错误(与异步API错误无关),例如当addrInfo.addressElements
的长度小于9个元素时
试一试
您的
rp
s被正确捕获,但有一个承诺没有明显的错误捕获,那就是您的生活:
(async () => {
// do some stuff, including async
)();
顺便说一句,它可以抛出自己的错误(与异步API错误无关),例如当addrInfo.addressElements
的长度小于9个元素时
试一试
这段代码到底包含了什么?应正确捕获
wait
。您的查询在每个循环迭代中都是相同的。为什么不抓住它一次,然后迭代数据呢?代码中到底抛出了什么?应正确捕获wait
。您的查询在每个循环迭代中都是相同的。为什么不抓住它一次,然后迭代数据呢?