gpt4 book ai didi

javascript - 如何映射数组、创建 Promise 并在解析时中断

转载 作者:行者123 更新时间:2023-12-01 00:38:44 24 4
gpt4 key购买 nike

我一直在使用 bluebird 库的 Promise.map 函数,它从它收到的数组中返回一个已解决的 promise 数组 - 正如它应该的那样。

我只想在数组上映射,直到它达到第一个解析,然后它并退出。

到目前为止我所拥有的是:

var Promise = require('bluebird');

let comparer = async function (img1, imgURLarray) {

const img = img1

new Promise.map(imgURLarray, function (imgurl) {

let img2 = new Promise(x => x(Jimp.read('https:' + imgurl)))

let diff = Jimp.diff(await img, await img2);

return diff.percent


}).then(function (res) {
console.log(res);
});

comparer(img1, imgURLarray)

参数 img1 是一个 Object 常量,而 imgURLarray 包含超过 200 个字符串,它们通过 Jimp 库进行 1:1 比较。

而不是返回 200 多个 Jimp.diff 对象的整个数组。我只想返回第一个满足此条件的:

(diff.percent < 0.01 ? return imgurl : --END MAP FUNCTION-- )

我研究了 Promise.some(),但由于我不是从一系列 promise 开始,我认为这行不通。有人知道如何做到吗?将不胜感激。

最佳答案

这可能比您想象的要简单得多:

async function comparer(img, imgURLarray) {
for (const imgurl of imgURLarray);
const otherimg = await Jimp.read('https:' + imgurl);
const diff = Jimp.diff(img, otherimg);
if (diff.percent < 0.01)
return imgurl;
}
throw new Error("no imgurl with diff.percent < 0.01 found"); // or whatever you want to do
}

关于javascript - 如何映射数组、创建 Promise 并在解析时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com