我想知道是否有人知道一个好方法来重构以下函数成一个更有承诺风格的函数:
function runProcess(processStarted, processFinished) {
getProcessId(processStarted)
doABunchOfAsyncLogic(processFinished)
}
它是这样被调用的:
runPromise(function handleStart(){...}, function handleEnd(){...})
这不是一个很好的承诺用例,因为从本质上讲,您需要两个回调:一个用于开始,一个用于结束。但承诺是一次性的:一旦确定,就不能再确定或类似。
你可以做到这一点,通过返回一个包含两个承诺的数组,或者一个包含"start"one_answers"finish"两个承诺的对象:
function runProcess() {
return {
start: new Promise(...),
finish: new Promise(...)
};
}
…但这不是一个自然的承诺用例。
我可能希望进程在函数调用期间开始,并且只承诺其结束。