8小时后....
不确定发生了什么,但我意识到当我将一个文件写入项目的根目录时,它陷入无限循环。在其他地方,它运作良好。
// UPDATE
仍然在努力。错过了超级碗。我唯一的更新是writeFileSync给出完全相同的错误。
我已经在这个问题上敲了一会儿。
promiseFunction = [promiseFunction1, promiseFunction2, promiseFunction3].reduce((oldFunction, newFunction)=>{
return function (){
return oldFunction().then(()=>{
return newFunction()
})
}
}
当我尝试测试promiseFunction()时,我得到一个无限的测试循环(我的所有测试直到测试promiseFunction继续永久射击)
然而,问题是,承诺功能将其全部搞定是promisify(fs.writeFile)
当我尝试使用其他承诺函数时,例如promisify(fs.readFile)
,
一切正常。
当我在控制台上记录readFile和writeFile promises之间的区别时,会有相应的结果:
//readFile
readFilePromise Promise {
_bitField: 67108864,
_fulfillmentHandler0: undefined,
_rejectionHandler0:
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
_promise0: undefined,
_receiver0: undefined }
//writeFile
writeFilePromise Promise {
_bitField: 67108864,
_fulfillmentHandler0: undefined,
_rejectionHandler0:
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
_promise0: undefined,
_receiver0: undefined }
我根本不明白为什么我会用writeFile获得这个无限循环。请上帝帮助。
答案 0 :(得分:0)
如果您想要的是一个系列,那么可能返回一个函数并不是您想要的。主要是因为什么都不会被称为。而是利用承诺链:
[promiseFunction1, promiseFunction2, promiseFunction3]
.reduce((memo, next) => memo.then(next), Promise.resolve());