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对象执行其他操作。这样做的变通方法是什么?