所以我在我的代码中有一个WIFE,里面有一个while循环。当循环完成时,console.log(“Hey”)执行但它不会退出该函数。谁能告诉我发生了什么事?
(function () {
return new Promise(async resolve => {
while (i <= fcount) {
i++;
//some code
}
console.log("Hey");
resolve("done");
})
}());
你只需要返回值:
var result = (function () {
return new Promise(async resolve => {
while (i <= fcount) {
i++;
//some code
}
console.log("Hey");
resolve("done");
})
}());
但它回报了承诺,所以:
console.log(result.then(res => console.log(res)))
当你说
它没有出来的功能
是的,它来自函数,为您提供承诺。
做这样的事情:
(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
使用async / await
在返回之前我没有关闭浏览器(使用puppeteer),因此程序继续运行。感谢大家的反馈。