Ric*_*chS 2 javascript settimeout promise es6-promise
如果这是一个基本问题,我很抱歉。我真的很困惑 Promise 在 Javascript 中是如何工作的。
我有以下代码:
function wait(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Done waiting");
resolve(ms);
}, ms);
});
}
let a = true;
let p = new Promise(async (resolve, reject) => {
await wait(3000);
console.log("Inside Promise");
if (a) {
resolve("Success");
} else {
reject("Failure");
}
});
const func = async () => {
let output = await p;
console.log(output);
};
func().then(console.log("abc"));
Run Code Online (Sandbox Code Playgroud)
这是打印输出:
abc
Done waiting
Inside Promise
Success
Run Code Online (Sandbox Code Playgroud)
我一生都无法弄清楚为什么abc首先打印出来。难道不应该等待 func() 执行完成吗?我预计abc最后打印。谁能引导我完成执行步骤?提前致谢。我真的很感激。
您提供的Promise.then不是回调,而是在运行时立即评估。您需要将 移动到函数console.log体内:
func().then(() => console.log("abc"));
Run Code Online (Sandbox Code Playgroud)
请参阅下面的工作示例:
func().then(() => console.log("abc"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |