【问题标题】:how to execute return statement without waiting for asynchronous function如何在不等待异步函数的情况下执行return语句
【发布时间】:2021-07-21 12:32:48
【问题描述】:

在我的打字稿代码中,我有以下内容:

await func(obj);
return { statusCode: 200}

但是,这样做会导致返回延迟(因为我认为它正在等待 func 完成运行)- 有没有办法在完全在后台运行 func 时立即返回?

【问题讨论】:

    标签: typescript asynchronous async-await


    【解决方案1】:

    只是不要await吗?

    // run func without waiting for it to finish
    func(obj);
    
    // return immediately
    return { statusCode: 200}
    

    【讨论】:

    • 如果在超时函数中有另一个等待,你将如何解决这个问题?据我了解,等待后的代码不会运行。
    • 它应该仍然可以正常运行,但是由于返回的 Promise 没有与任何东西链接,您将无法等待它解决并在此之后专门执行某些操作。如果您需要,请在 Promise 上调用 .then 或返回它。
    【解决方案2】:

    只是不要await函数调用。示例如下:

    function timeout(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
    
    async function test() {
      await timeout(3000);
      console.log("done waiting");
    }
    
    async function test1() {
      timeout(3000);
      console.log("done immediately");
    }
    
    test();
    test1();

    【讨论】:

      猜你喜欢
      • 2023-01-20
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 2016-07-23
      • 2018-05-28
      • 2019-02-01
      相关资源
      最近更新 更多