Javascript 在数组映射中使用新Promise
我使用的软件有三个阶段: 第一阶段、第二阶段和第三阶段 在第一阶段中,我使用exiftool从文件中提取元数据,但过程是异步的,因此我需要在调用下一阶段之前等待结果,为此,我使用以下代码: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
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呢??