Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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_Javascript_Node.js_Bluebird - Fatal编程技术网

Javascript 在数组映射中使用新Promise

Javascript 在数组映射中使用新Promise,javascript,node.js,bluebird,Javascript,Node.js,Bluebird,我使用的软件有三个阶段: 第一阶段、第二阶段和第三阶段 在第一阶段中,我使用exiftool从文件中提取元数据,但过程是异步的,因此我需要在调用下一阶段之前等待结果,为此,我使用以下代码: MAP.files = files.scan((file) => { return new Promise((resolve) => { exiftool(file, (error, metadata) => { file.error = error

我使用的软件有三个阶段:

第一阶段、第二阶段和第三阶段

在第一阶段中,我使用exiftool从文件中提取元数据,但过程是异步的,因此我需要在调用下一阶段之前等待结果,为此,我使用以下代码:

MAP.files = files.scan((file) => {

  return new Promise((resolve) => {

    exiftool(file, (error, metadata) =>  {
      file.error    = error
      file.metadata = metadata
      resolve(file)
    });

  });
});
返回的数组包含一组对象,如下所示:

[ Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> }
  .....
]
MAP.files.text = MAP.files((file) => {

   //To be able to access the real file, i need use then, like this:


   file.then((realFile) => {

     console.log(realFile) // real file with properties
   });


});
在下一阶段(第3阶段),我也要这样做:

MAP.files.final = MAP.files.text((file) => {

});

我的问题是:THEN函数,我不能逃避它吗?我需要使用文件吗。然后在第一阶段之后的每个阶段中???

看起来像是使用
承诺。所有的
都会帮助你

例如,如果你有一系列的承诺

var p = [p1, p2, p3]

Promise.all(p).then( (results) => 
   /* results is an array of the results of each promise in p */
);

有关
Promise的文档,请参阅和。all

使用
Promise看起来很像。all
将帮助您

例如,如果你有一系列的承诺

var p = [p1, p2, p3]

Promise.all(p).then( (results) => 
   /* results is an array of the results of each promise in p */
);

有关
Promise.all

的文档,请参阅和。只需使用
Promise.all
?不,您无法摆脱异步。您不清楚自己在问什么。你能改写你的问题来突出你的确切问题,并对其进行更详细的描述吗?这不是我的问题,Bergi,我想知道我是否需要在下一阶段使用“then(…)”。@TennysonH我更新了我的问题,你能看到吗?只需使用
承诺。所有的
?不,你不能逃避异步。不清楚你在问什么。你能改写你的问题来突出你的确切问题,并进一步描述它吗?这不是我的问题Bergi,我想知道我是否需要在下一阶段使用“then(…)”。@TennysonH我更新我的问题,你能看到吗?Hei@TennyshonH,你能检查我的更新吗?我想现在清楚了。嗨,丁尼生。如果我需要将promise.all中的异步代码分配给MAP.text??Hei@TennyshonH,你能检查我的更新吗?我想现在清楚了。嗨,丁尼生。如果我需要将promise.all中的异步代码分配给MAP.text呢??