嵌套的promise,await和async

自那以后

我有一个main()函数。这个主要函数调用一些函数,其中一个称为TEST()。TEST()调用TEST1()。这个TEST1()调用让我们说TEST2()。我的问题是TEST2()在我的main()调用下一个函数而我的TEST()调用其他任何对象之前,创建了一个必须初始化的对象。我这样尝试过,但是不起作用:

function main(){
    TEST1()
    //other functions
}

async function TEST() {
    await TEST1() // TEST1() and TEST2() should finish before 
    //going on with "some code"
    //some code
}

async function TEST1(something) {
    return new Promise(resolve => {
        //some stuff
        let newobject = await TEST2(somethingelse)
        resolve(newobject)
    });
}

function TEST2(somethingelse) {
    return new Promise(resolve => {
        //make object
        resolve(object)
        return object;
    });
}

TEST()已与TEST1()一起使用。但是,当将“ asnyc”关键字添加到TEST1()并添加TEST2()时,它将不再起作用。可能是因为您可能无法在异步函数中使用Promise?

错误是:

在这种情况下不允许使用“ await”表达式。

全堆的家伙

无需将它们包装newobject在另一个包装Promise,您可以直接TEST2(somethingelse)TEST1函数返回结果,因为在async上下文中,返回结果隐式包装在Promise中。

您还需要mainmain等待时使函数异步

在main()调用下一个函数以及TEST()调用其他任何函数之前。

async function main(){
    await TEST();
    console.log("Executing code after TEST in main");
}
async function TEST() {
     console.log("Before TEST1");
     await TEST1() 
     //some code
     console.log("Executing some other code");
     console.log("TEST finished");
}
    
async function TEST1(something) {
     console.log("TEST1 started");
     let newobject = await TEST2("somethingelse");
     console.log("TEST1 finished", newobject);
     return newobject;
}
    
function TEST2(somethingelse) {
      console.log("TEST2 started");
      return new Promise(resolve => {
          //make object
          const object = {"foo":somethingelse}
          resolve(object);
          console.log("TEST2 resolved");
      });
      
}
main();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 await 和 async 处理 promise

处理promise和async await功能

JavaScript:Promise.All()和Async / Await和Map()

javascript async / await and promise

JavaScript promise和async await有什么区别?

试图了解新的Promise和Async / await之间

使用Async / Await vs Promise.all和for循环

Promise、await/async 和 setTimeout 有什么区别?

使用Axios和Async / Await解析嵌套的JSON

async / await返回Promise {<pending>}

EvaulateScriptAsPromiseAsync和async / await

Async / Await与Promise.all和.map函数无法正常工作

如何将Flow与async / await,promise和thenables一起使用?

使用async / await和promise.all在数组中查找匹配的元素

从 jQuery ajax 函数的 promise 语法到 try/catch/finally 和 async/await 的转换失败?

当使用带有promise和appendChild的async / await时,应用程序停止工作

使用async / await和Promise.all()在对象数组上进行api请求

async/await forEach 和 Promise.all + map 有什么区别

Promises 和 async await 不起作用 -Unhandled Rejection at: Promise Promise { <rejected> 'noData' } 原因:undefined - node.js

Promise.alls 和 await

使用 Promise 和 await 代替 then()

JavaScript async、await、Promise、bug Unexpected token

用async \ await重写基于Promise的代码

AngularJs $ q promise是否与async / await兼容?

用async / await重写Promise,寻求澄清

使用.then()从Promise转换为async / await

Async/Await vs new Promise(resolve,reject)

NodeJS:promise 在 async/await 之外工作

使用Async Await中的Promise数据