如何从另一个函数发送请求承诺解析响应,并且该函数是从Node.js中的请求承诺内部调用的]] << [
实际情况是我想从test2()
函数返回test4()
的请求承诺响应。因为在test4()
中完成了一些独立的计算,所以test2()
无法等待test3()
和test4()
所以我再次用状态标志从test2()
调用test4()
,但问题是第一个请求承诺在内存堆栈中被覆盖。是否可以从另一个函数而不是该函数发送请求承诺响应。var status = false;
(async () => {
var res = await test1();
console.log('Hi');
console.log(res);
})();
async function test1() {
console.log('Call to test2');
var restest1 = await test2();
console.log('All Finished', restest1);
return restest1;
}
function test2() {
return new Promise(async resolve => {
if (status) {
resolve('success');
}
else {
setTimeout(function () {
console.log('Call to test3');
test3();
}, 5000);
}
});
}
function test3() {
test4();
}
function test4() {
status = true;
test2();
console.log('test4 finished');
}
问题是console.log('Hi'); console.log(res);
不起作用
实际情况是我想从test4()函数返回test2()的请求承诺响应。因为在test4()中完成了一些独立的计算,而test2()不能等待...
回答如下:根据您的描述和所需的输出,我有一个基于您当前代码结构的快速修复。这个想法是传递resolve函数,直到您真的要调用它为止。因此,当您通过初始解析函数调用test4内部的test2时,实际上是原始的诺言得以解析并返回。它回答了您的问题还是我想念您的意思?