Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用promise无限循环mocha动态创建函数_Javascript_Recursion_Promise - Fatal编程技术网

Javascript 用promise无限循环mocha动态创建函数

Javascript 用promise无限循环mocha动态创建函数,javascript,recursion,promise,Javascript,Recursion,Promise,8小时后 不确定发生了什么,但我意识到,当我将一个文件写入项目的根目录时,它陷入了无限循环。在其他任何地方,它都运行良好 //更新 还在做这个。错过了超级碗。我唯一的更新是writeFileSync给出了完全相同的错误 我已经在这上面敲了一段时间了 promiseFunction = [promiseFunction1, promiseFunction2, promiseFunction3].reduce((oldFunction, newFunction)=>{ return func

8小时后

不确定发生了什么,但我意识到,当我将一个文件写入项目的根目录时,它陷入了无限循环。在其他任何地方,它都运行良好

//更新

还在做这个。错过了超级碗。我唯一的更新是writeFileSync给出了完全相同的错误

我已经在这上面敲了一段时间了

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());

问题是我为我正在构建的数组中的每个对象调用函数问题是我为我正在构建的数组中的每个对象调用函数