await 带有回调的异步函数

问题描述 投票:0回答:1

我不确定在这种情况下如何使用 Promise:

我有一个异步函数,它有一些回调,我想等待它完成。

async function test() {
   someCall.then((res) => {
      return res;
   });
}

var response = await test();

我必须做什么,以便在调用

test()
时等待
someCall
完成并给出返回值?

javascript async-await
1个回答
-2
投票

如果在

someCall.then(() => {})
内部返回,则返回命令仅终止
then
块,并且返回值只能在
test
函数的作用域内访问。

在这种情况下,你可以;

  1. 返回承诺

     async function test() {
      return new Promise((resolve, reject) => {
         someCall().then(res => {
          resolve(res)
        }).catch(error => {
          reject(error)
        })
      })
    }
    
    var response = await test();
    
  2. 使用await(最好与try-catch块一起使用):

     async function test () {
      try {
       const res = await someCall();
       return res;
      }
      catch (error) {
       return error;
      }
     }
    
     var response = await test();
    

希望这个答案有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.