我有一个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中。
您还需要main
在main
等待时使函数异步:
在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] 删除。
我来说两句