我要理解async
/ await
,但无法在函数内部执行顺序,和等待对方完成。
基本上我试图让它发射myProm
,等一下,然后重新开火。
我没有得到什么?
function myProm() {
return new Promise((resolve, reject) => {
resolve(setTimeout(() => {
console.log('promise in one seconds');
}, 1000))
})
}
async function myFunc() {
try {
await myProm();
await myProm();
}
catch(error) {
console.log(error)
}
}
myFunc()
答案 0 :(得分:3)
您立即致电resolve
。您应该内部 setTimeout
回调:
function myProm() {
return new Promise((resolve, reject) => {
console.log('promise in one seconds');
setTimeout(() => {
resolve();
}, 1000);
})
}
(如果您只想致电解决,则setTimeout
可以是setTimeout(resolve, 1000)
。)
直播示例:
function myProm() {
return new Promise((resolve, reject) => {
console.log('promise in one seconds');
setTimeout(() => {
console.log('resolved');
resolve();
}, 1000);
})
}
async function myFunc() {
try {
await myProm();
await myProm();
}
catch(error) {
console.log(error)
}
}
myFunc();

答案 1 :(得分:1)
您的myProm
函数承诺立即致电resolve()
,因此实际上并没有等待任何事情。
一旦你希望你的承诺得到解决(在回调中),你只需要调用resolve()
。