我有以下代码段。它有一个函数fn1
,用于定义promise
变量。 promise
存储承诺对象fn2
返回。我在then
对象上调用promise
,最后返回promise
。
function fn1() {
var promise = fn2(a, b);
promise.then(function() {
console.log('handling then');
console.log('doing something');
});
return promise;
}
由于then
分支是异步代码,我的理解是当内部函数异步时外部函数也以异步方式运行。但问题是在promise
内的代码完成之前返回then
对象。
我尝试在promise
内返回then
对象,如下所示。但这不会返回promise
内定义的fn1
。
function fn1() {
var promise = fn2(a, b);
promise.then(function() {
console.log('handling then');
console.log('doing something');
return promise;
});
}
请帮忙,我该如何解决这个问题。谢谢。
答案 0 :(得分:0)
你想这样做:
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 */ })
答案 1 :(得分:0)
但问题是在内部代码完成之前返回了promise对象。
那么你的异步概念是有缺陷的。 Async 不阻止执行。 promise是表示挂起操作的对象。您知道该操作是否完成,您需要知道的是什么。你将回调附加到承诺,知道它是否确实。
您似乎要做的是知道fn2
是否通过fn1
完成,并在此过程中进行处理。
function fn1() {
return fn2(a, b).then(function() {
console.log('handling then');
console.log('doing something');
});
}
fn1.then(function(){
// fn2 completed, fn1 completed handling
});