JS:将多重回调函数重构为promise

时间:2016-09-20 21:15:04

标签: javascript promise

我想知道是否有人知道将以下函数重构为更多promise-esque函数的好方法:

function runProcess(processStarted, processFinished) {
   getProcessId(processStarted)
   doABunchOfAsyncLogic(processFinished)
}

它是这样调用的:

runPromise(function handleStart(){...}, function handleEnd(){...})

1 个答案:

答案 0 :(得分:4)

这不是一个很好的承诺用例,因为它本质上需要两个回调:一个用于启动,一个用于完成。但承诺是一次性的:一旦解决,他们就无法重新定居或相似。

可以这样做,通过返回一个包含两个promises的数组,或一个带有单个promises的对象" start"并且"完成":

function runProcess() {
    return {
        start: new Promise(...),
        finish: new Promise(...)
    };
}

......但它不是一个自然的承诺用例。

我可能期望在函数调用期间启动的过程,并且只有 end 是承诺的。