当前位置: 首页 > 编程笔记 >

JavaScript 将数组简化为链接的承诺

施子民
2023-03-14
本文向大家介绍JavaScript 将数组简化为链接的承诺,包括了JavaScript 将数组简化为链接的承诺的使用技巧和注意事项,需要的朋友参考一下

示例

此设计模式对于从html" target="_blank">元素列表生成一系列异步操作很有用。

有两种变体:

  • “那么”的减少,它建立了一条链,只要该链成功就可以持续下去。

  • “捕获”减少量,它构建了一条链,只要链遇到错误,该链就会持续。

“然后”减少

这种模式的变体建立了一个链,可以用于链接动画或发出一系列相关的HTTP请求。.then()

[1, 3, 5, 7, 9].reduce((seq, n) => {
    return seq.then(() => {
        console.log(n);
        return new Promise(res => setTimeout(res, 1000));
    });
}, Promise.resolve()).then(
    () => console.log('done'),
    (e) => console.log(e)
);
// 将以1s的间隔记录1,3,5,7,9,9,完成

说明:

  1. 我们调用一个源数组,并提供一个初始值。.reduce()Promise.resolve()

  2. 减少的每个元素都会在初始值上加上a 。.then()

  3. reduce()的产品将是.then(...)。then(...)。Promise.resolve()

  4. 我们在reduce后面手动添加一个,以在所有前面的步骤都解决后执行。如果任何步骤失败,则将执行。.then(successHandler, errorHandler)successHandlererrorHandler

注意:“ then”减少量是的顺序对应物。Promise.all()

“渔获”减少

该模式的这种变体构建了一条链,可以用于顺序探测一组镜像资源的一组Web服务器,直到找到工作的服务器为止。.catch()

var working_resource = 5; // 源数组中的值之一
[1, 3, 5, 7, 9].reduce((seq, n) => {
    return seq.catch(() => {
        console.log(n);
        if(n === working_resource) { // 5正在工作
            return new Promise((resolve, reject) => setTimeout(() => resolve(n), 1000));
        } else { // 所有其他值都不起作用
            return new Promise((resolve, reject) => setTimeout(reject, 1000));
        }
    });
}, Promise.reject()).then(
    (n) => console.log('success at: ' + n),
    () => console.log('total failure')
);
// 将以1s的间隔记录1,3,5,'成功于5'

说明:

  1. 我们调用一个源数组,并提供一个初始值。.reduce()Promise.reject()

  2. 减少的每个元素都会在初始值上加上a 。.catch()

  3. reduce()的产品将会。Promise.reject().catch(...).catch(...)

  4. 在reduce之后,我们会手动追加,以解决前面的任何步骤。如果所有步骤均失败,则将执行。.then(successHandler, errorHandler)successHandlererrorHandler

注意:“ catch”减少是(在,但当前不在本机ECMAScript中实现的)顺序对应项。Promise.any()bluebird.js

 类似资料:
  • 我刚反应过来。Im正在尝试将包含链接的数组转换成将在网站中按顺序显示链接的东西。 类似这样的事情: 在服务器中显示的内容如下所示: 我试着做我找到的下面的代码,但是它失败了:

  • 本文向大家介绍简化嵌套数组JavaScript,包括了简化嵌套数组JavaScript的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数组数组,其中包含一些这样的元素- 我们的工作是编写一个递归函数,该函数接受此嵌套数组,并将数组中的所有fale值(NaN,undefined和null)替换为0。 因此,让我们为该函数编写代码- 示例 输出结果 控制台中的输出将为-

  • 问题内容: 我正在尝试将Java中的Javascript数组转换为Java数组。我正在使用javax.script包。我在这里测试了此示例,但是无法识别类型“ NativeArray” 我如何才能识别NativeArray类型? 问题答案: 按照这个答案,看来最好的选择是编写一个JavaScript转换器函数,该函数使用Rhino的Java绑定功能将本机JavaScript数组转换为Java数组。

  • 问题内容: 我有一个想要转换为纯JavaScript数组的json数组: 这是我的json数组: 如何将其转换为普通的javascript数组,如下所示: 问题答案: 已经是JS对象(不是JSON)。但是,您可以在这里: 编辑:将 元素插入数组中的正确位置。谢谢@RoToRa 也许一开始不创建此类对象会更容易。它是如何创建的?

  • 我一直在使用来格式化链接等,但我需要使用,所以在这种情况下我不能使用它。原因是我发现意外点击电话号码太容易了,所以我要用确认对话框拦截点击,然后打电话。 有没有一种简单的方法可以让我的

  • 问题内容: 这可能是初学者的问题,但是我已经花了更长的时间阅读文档,而且找不到任何解决方案。我以为我可以对每个维度使用爆破,然后将这些字符串放回一起以组成新的简单数组。但是我不知道联接模式是否也不在值中,因此在执行完原始值之后,可能会损坏。 多维数组内部是否存在类似于数组的内容? 问题答案: 采用 使用PHP 5.5.9-1ubuntu4.24(CLI)测试(内置:2018年3月16日12:32: