所以我的代码中有一个while循环inide这样的IIFE。循环结束后,会执行console.log(“ Hey”),但不会从函数中消失。谁能告诉我发生了什么事?
(function () {
return new Promise(async resolve => {
while (i <= fcount) {
i++;
//some code
}
console.log("Hey");
resolve("done");
})
}());
答案 0 :(得分:-1)
您只需要返回值:
var result = (function () {
return new Promise(async resolve => {
while (i <= fcount) {
i++;
//some code
}
console.log("Hey");
resolve("done");
})
}());
但是它返回了promise,所以:
console.log(result.then(res => console.log(res)))
答案 1 :(得分:-1)
你说
它不是从功能中消失的
是的,它是从函数返回给您的。
只需执行以下操作:
(function () {
return new Promise(resolve => {
while (i <= fcount) {
i++;
//some code
}
console.log("Hey");
resolve("done");
})
}().then(message => console.log(message)));
您将在控制台中获得done
。
另一件事,为什么要使用async
和async
一起使用await
。
您可以执行以下操作:
async function whileFunc() {
const message = await (function () {
return new Promise(resolve => {
while (i <= fcount) {
i++;
//some code
}
console.log("Hey");
resolve("done");
})
}());
console.log(message);
}
调用whileFunc
会使用异步/等待方式获得message
答案 2 :(得分:-1)
我在返回之前没有关闭浏览器(使用操纵符),因此程序保持运行。感谢大家的反馈。