将承诺传递给Javascript中的另一个函数

时间:2016-01-23 03:40:04

标签: javascript promise

我想做这样的事情

function doSomething(aPromise) {
    if (/*xxx*/) {
        // doSomethingElse
    } else {
        return aPromise
            .then(doSomethingMore)
    }
}

但是,如果我执行此操作,则在调用aPromise时将始终执行doSomething。我如何懒惰地执行它直到它被调用

1 个答案:

答案 0 :(得分:0)

尝试将aPromise用作函数,在Promise块<{1}}调用aPromise()时返回else

function aPromise() {
  return Promise.resolve(/* `Promise` return value */)
}

function doSomething(aPromise) {
    if (/*xxx*/) {
        // doSomethingElse
    } else {
        // call `aPromise()` 
        return aPromise()
            .then(doSomethingMore)
    }
}