递归功能结束代码执行"/>
节点异步/等待递归功能结束代码执行
我对节点异步等待和递归函数有问题。由于某种原因,在解决了递归函数的Promise之后,代码执行将停止。以下只是我用来演示我的问题的简单示例(尽管在通过请求库发送一些请求时发现了问题)。
如果运行代码,您将看到
Starting
Inside Promise
但不是“测试完成”。
function promiseFunc(number) {
return new Promise((resolve, reject) => {
if (number == 100) {
console.log('Inside Promise');
resolve('Done');
} else {
number += 1
promiseFunc(number);
}
})
}
(async function testFunc() {
console.log('Starting');
await promiseFunc(0)
console.log("Test completed");
})()
有人可以告诉我这是什么问题吗?
先谢谢您。
回答如下:以下是一些解决方法:
function promiseFunc(number) {
return new Promise((resolve, reject) => {
if (number == 100) {
console.log('Inside Promise');
resolve('Done');
} else {
number += 1;
resolve(promiseFunc(number));
}
})
}
(async function testFunc() {
console.log('Starting');
await promiseFunc(0)
console.log("Test completed");
})()
或者,有趣的是,使用async
/ await
而不是显式new Promise(...)
的等效代码适用于您的情况:
// an async function returns a Promise
async function promiseFunc(number) {
if (number == 100) {
console.log('Inside Promise');
return 'Done';
} else {
number += 1;
// it seems to work as intended without saying return promiseFunc(...)
promiseFunc(number);
}
}
(async function testFunc() {
console.log('Starting');
await promiseFunc(0)
console.log("Test completed");
})()
更多推荐
节点异步/等待递归功能结束代码执行
发布评论