Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在IIFE中使用异步函数来使用try、catch_Javascript_Node.js - Fatal编程技术网

Javascript 如何在IIFE中使用异步函数来使用try、catch

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

我在iLife中使用
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
。您的查询在每个循环迭代中都是相同的。为什么不抓住它一次,然后迭代数据呢?