当前位置: 首页 > 知识库问答 >
问题:

使用数组[duplicate]

广晔
2023-03-14

我正在寻找一种类似于romise.all的方法将多个promise链在一起,除了我希望每个promise都等待最后一个promise。我肯定这可能已经得到了回答,但我不知道该用谷歌搜索什么。

function output(msg) {
 return new Promise((resolve,reject) => {
  console.log(msg);
  resolve();
 });
}

output('1st').then(() => {
 output('2nd').then(() => {
  output('3rd').then(() => {
   console.log('done')
  });
 });
});

// I want to be able to build from an array of length n
const msgs = ['1st','2nd','3rd'];

for(let i = 0; i < msgs.length;i++){
 // Not sure what to do here
 output(msgs[i]).then(() => {
  output(msgs[i+1]);
 });
}

共有2个答案

岳嘉悦
2023-03-14

您可以这样将它们链接起来,以避免像地狱一样筑巢:

output('a')
    .then(a_out => output('b'))
    .then(b_out => output('c'))
    .then(c_out => console.log('all done'));

对于一系列promise

let loopback = (arr, i=0) => {
    return arr[i].then(() => {
        if (i < arr.length - 1)
            return loopback(arr, i+1);
    });
};

let last = loopback(load);

单于皓轩
2023-03-14

您可以在数组上使用像foreach这样的循环,并在异步函数中使用wait

function output(msg) {
 return new Promise((resolve,reject) => {
  console.log(msg);
  resolve();
 });
}
const msgs = ['1st','2nd','3rd'];
function ArrPromiseAll(arr) {
  arr.forEach(async function(i) {
    await output(i);
  });
  console.log("Done All.");
}
ArrPromiseAll(msgs);

产出:

1st
2nd
3rd
Done All.
 类似资料:
  • 数组的情况: $user['id'] = 100; $user['name'] = '张三'; 控制器中需要为模板赋值 $this->assign('user', $user); 模板中使用{$user.id}输出$user['id'] 使用{$user.name}输出$user['name'] 支持二维数组,比如小学生平均年龄9周岁 控制器代码: $user['young']['age'] =

  • 使用,为什么它显示(原始类型)和数组的不同列表大小? a) 使用array,每当我执行以下程序时,列表大小=1 b) 但是如果我从数组类型更改为数组(比如),那么我得到的列表大小是4,我认为是正确的。 PS:使用(包装类)数组,结果就可以了,但我不确定为什么在primitive数组中,列表大小是1。请解释一下。

  • 问题内容: 我有一个数组 如您所见,键0与1、3和4相同。键2与它们全部不同。 在它们上运行array_unique函数时,唯一剩下的是 有什么想法为什么array_unique无法按预期工作? 问题答案: 这是因为使用字符串比较来比较项目。从文档: 注意:当且仅当(string)$ elem1 ===(string)$ elem2,两个元素才被视为相等。换句话说:当字符串表示相同时。将使用第一个

  • 问题内容: 我正在尝试使用数组查询MySQL数据库,但是遇到了麻烦! 我有一个名为客户的表,我希望能够从“扇区”列等于$ sectorlink的所有行中选择“名称”。 然后,我想将所有名称放入数组,以便执行下一个查询:从另一个表中选择所有行,这些表的“ client”列等于从第一个查询返回的名称之一。我做错了,因为它返回了致命的SQL错误。我对所有变量感到困惑! $ sectorlink和$ co

  • 问题内容: 在一维数组中使用array_search很简单 但是多维数组呢? 例如,我想获取位置为1的汽车的索引。我该怎么做? 问题答案:

  • 我试着比较两个物体,两个物体在每个区域上都有完全相同的值。 请注意,它们都打印相同的结果。 然而,当我比较每个对象中的字段时,和使用。等于时,返回值为false。 以下是比较数值的方法示例: 是否有其他方法可以比较和?所有其他字段在相同的equals方法中返回true(如预期)。 数字2={10,11}和字符串2={7c2cfc4e-5805-45ad-8687-4f2412a92e1d,d91b