Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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 在承诺中写入文件_Javascript_Node.js_Es6 Promise_Fs - Fatal编程技术网

Javascript 在承诺中写入文件

Javascript 在承诺中写入文件,javascript,node.js,es6-promise,fs,Javascript,Node.js,Es6 Promise,Fs,这里的函数创建一组文件,但不写入它们。然而,如果我最终删除了Promise.all,并且根本不解析函数,它会将数据写入文件。我试着写什么并不重要,我可以注释掉所有的东西,只写“hello world”,但它仍然不会写任何东西。问题很简单,为什么 const writeSmilFiles = (smilInfo) => { return new Promise ((resolve, reject) => { const p1 = smilPartOne(); con

这里的函数创建一组文件,但不写入它们。然而,如果我最终删除了
Promise.all
,并且根本不解析函数,它会将数据写入文件。我试着写什么并不重要,我可以注释掉所有的东西,只写“hello world”,但它仍然不会写任何东西。问题很简单,为什么

const writeSmilFiles = (smilInfo) => {
  return new Promise ((resolve, reject) => {
    const p1 = smilPartOne();
    const p2 = smilPartTwo();

    let promises = dataTypes.new.camera_set.map(instance => {
      return new Promise((resolve, reject) => {
        const smilEntries = smilInfo.filter(smil => smil.BroadcastAndKlippTupleId == instance.BroadcastAndKlippTupleId && smil.CameraId == instance.CameraId);
        try {
          const fileName = `${__dirname}/newSmilFiles/${smilEntries[0].Smil}`;
          const file = fs.createWriteStream(fileName);
          file.write(p1);

          smilEntries.forEach(entry => {
            const smilEntry = smilSwitch(entry.Filename, entry.Bitrate, entry.Width, entry.Height);
            file.write(smilEntry);
            console.log(smilEntry);
            file.write('\n');
        });

          file.write(p2);
          file.end();
          resolve(`Smil written.`);
        } catch (ex) {
          reject(ex);
        }
      });
    });

    Promise.all(promises).then(msg => {
      resolve(msg);
    });
  });
};

解析流实际完成的时间:

file.on("finish", () => resolve(`Smil written.`));

解析流实际完成的时间:

file.on("finish", () => resolve(`Smil written.`));

请在您的问题中也提供简化版的“hello world”好吗?调试该简化版本可能更容易。这不是问题的原因,但您应该使用
返回承诺。所有(…)
,不要将其包装在您自己创建的额外承诺中。您所做的是一种承诺反模式,如果您的任何承诺被拒绝,您会发现编程错误。@jfriend00非常感谢,非常好的提示。我一直在想这个事实——现在有道理了!:)请在您的问题中也提供简化版的“hello world”好吗?调试该简化版本可能更容易。这不是问题的原因,但您应该使用
返回承诺。所有(…)
,不要将其包装在您自己创建的额外承诺中。您所做的是一种承诺反模式,如果您的任何承诺被拒绝,您会发现编程错误。@jfriend00非常感谢,非常好的提示。我一直在想这个事实——现在有道理了!:)我想还是要在fs库中学习函数。非常感谢:)我想还是要在fs库中学习函数。非常感谢:)