Javascript 用promise无限循环mocha动态创建函数
8小时后 不确定发生了什么,但我意识到,当我将一个文件写入项目的根目录时,它陷入了无限循环。在其他任何地方,它都运行良好 //更新 还在做这个。错过了超级碗。我唯一的更新是writeFileSync给出了完全相同的错误 我已经在这上面敲了一段时间了Javascript 用promise无限循环mocha动态创建函数,javascript,recursion,promise,Javascript,Recursion,Promise,8小时后 不确定发生了什么,但我意识到,当我将一个文件写入项目的根目录时,它陷入了无限循环。在其他任何地方,它都运行良好 //更新 还在做这个。错过了超级碗。我唯一的更新是writeFileSync给出了完全相同的错误 我已经在这上面敲了一段时间了 promiseFunction = [promiseFunction1, promiseFunction2, promiseFunction3].reduce((oldFunction, newFunction)=>{ return func
promiseFunction = [promiseFunction1, promiseFunction2, promiseFunction3].reduce((oldFunction, newFunction)=>{
return function (){
return oldFunction().then(()=>{
return newFunction()
})
}
}
当我尝试测试promiseFunction()时,我会得到一个无限的测试循环(在测试promiseFunction之前的所有测试都会一直启动)
然而,问题在于,把一切搞砸的promise函数是promisify(fs.writeFile)
当我尝试使用不同的promisify函数时,比如promisify(fs.readFile)
,
一切正常
当我将readFile和writeFile承诺之间的差异记录在控制台日志中时,会得到相应的结果:
//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 }
我只是不明白为什么我会得到这个写文件的无限循环。请上帝保佑。如果您想要的是一个系列,那么返回函数可能不是您想要的。主要是因为什么都不叫。而是利用承诺链:
[promiseFunction1, promiseFunction2, promiseFunction3]
.reduce((memo, next) => memo.then(next), Promise.resolve());
如果您想要的是一个系列,那么返回函数可能不是您想要的。主要是因为什么都不叫。而是利用承诺链:
[promiseFunction1, promiseFunction2, promiseFunction3]
.reduce((memo, next) => memo.then(next), Promise.resolve());
问题是我为我正在构建的数组中的每个对象调用函数问题是我为我正在构建的数组中的每个对象调用函数