Javascript 返回主函数的promise变量,位于;然后";分支
我有下面的代码片段。它有一个函数Javascript 返回主函数的promise变量,位于;然后";分支,javascript,asynchronous,Javascript,Asynchronous,我有下面的代码片段。它有一个函数fn1,用于定义promise变量。promise存储通过fn2返回的promise对象。我在promise对象上调用了,然后,最后返回promise function fn1() { var promise = fn2(a, b); promise.then(function() { console.log('handling then'); console.log('doing something');
fn1
,用于定义promise
变量。promise
存储通过fn2
返回的promise对象。我在promise
对象上调用了,然后
,最后返回promise
function fn1() {
var promise = fn2(a, b);
promise.then(function() {
console.log('handling then');
console.log('doing something');
});
return promise;
}
由于then
分支是异步代码,因此我的理解是,当内部函数是异步的时,外部函数也以异步方式运行。但是问题是promise
对象在中的代码完成之前返回
我试图返回中的promise
对象,然后返回,如下所示。但这不会返回在fn1
中定义的承诺
function fn1() {
var promise = fn2(a, b);
promise.then(function() {
console.log('handling then');
console.log('doing something');
return promise;
});
}
请帮忙,我该如何解决这个问题。谢谢。您想这样做:
function fn1() {
var promise = fn2(a, b);
return promise
}
fn1().then(function () {
console.log('handling then');
console.log('doing something');
});
或者你可以这样做:
fn2(a, b).then(() => { /* do something */ })
但问题是promise对象在内部代码完成之前返回
那么你的异步概念是有缺陷的。异步不阻止执行。承诺是表示挂起操作的对象。这是你想要知道的,那次行动是否完成了。您会对承诺进行回访,以了解承诺是否兑现
您似乎要做的是了解是否通过fn1
完成了fn2
,并在此过程中进行处理
function fn1() {
return fn2(a, b).then(function() {
console.log('handling then');
console.log('doing something');
});
}
fn1.then(function(){
// fn2 completed, fn1 completed handling
});
你想完成什么?您可能采取了错误的方法(return
在异步调用之后并没有真正的帮助)。@Hodrobond-我需要返回promise对象,因为另一段代码正在使用此promise对象执行其他操作。这样做的变通方法是什么?