我想知道是否有人知道将以下函数重构为更多promise-esque函数的好方法:
function runProcess(processStarted, processFinished) {
getProcessId(processStarted)
doABunchOfAsyncLogic(processFinished)
}
它是这样调用的:
runPromise(function handleStart(){...}, function handleEnd(){...})
答案 0 :(得分:4)
这不是一个很好的承诺用例,因为它本质上需要两个回调:一个用于启动,一个用于完成。但承诺是一次性的:一旦解决,他们就无法重新定居或相似。
你可以这样做,通过返回一个包含两个promises的数组,或一个带有单个promises的对象" start"并且"完成":
function runProcess() {
return {
start: new Promise(...),
finish: new Promise(...)
};
}
......但它不是一个自然的承诺用例。
我可能期望在函数调用期间启动的过程,并且只有 end 是承诺的。