JavaScript 异步循环

阿里豆

我想知道是否有更好的方法在 JavaScript 中执行异步循环?我一直在使用以下递归方法,但我觉得可能有一种更清洁的方法。任何链接/建议将不胜感激。谢谢

var titles = ['Test 1', 'Test 2', 'Test 3'];
var i = 0;
addColumns();

function addColumns () {
    if (i < titles.length) {
        var data =  { 
            '__metadata': { 'type': 'SP.FieldText' },
            'FieldTypeKind': 3,
            'Title': titles[i],
            'MaxLength': '22' 
        };

        postToSP.createColumns(baseURL, listName, data)
            .then(function () {
                i++;
                addColumns();
            })
            .catch(function(e){
                console.log('Error: ' + e);
            })
    } else {
        return;
    };
};
贾里德·史密斯

假设执行是与值无关的(即一个不依赖于前一个的值)而是顺序的(它们必须以确定性顺序来回完成):

var allDone = titles.reduce((prev, title) => {
  var data =  { 
    '__metadata': { 'type': 'SP.FieldText' },
    'FieldTypeKind': 3,
    'Title': title,
    'MaxLength': '22' 
  };
  return prev.then(_ => postToSP.createColumns(baseURL, listName, data));
}, Promise.resolve(true));

这将使一系列 ajax 请求排队,只有在前一个请求完成后才会启动。错误处理留给读者作为练习。如果电话没有必须按照一定的顺序来完成,这是干净多了这种方式:

let allDone = Promise.all(titles.map(title => postToSP.createColumns...));

无论哪种方式,现在您都有一个 Promise,它将在所有异步调用完成时解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JavaScript中使for循环异步

来自分类Dev

Javascript中的异步循环

来自分类Dev

javascript:异步函数问题(异步等待循环)

来自分类Dev

调用异步时JavaScript循环

来自分类Dev

运行javascript循环,异步结果

来自分类Dev

通过异步JavaScript(Mocha)循环进行测试

来自分类Dev

在异步编程中停止JavaScript循环

来自分类Dev

对于循环,异步等待,承诺-Javascript

来自分类Dev

JavaScript异步循环不返回结果

来自分类Dev

Javascript 中异步任务的 for..in 循环

来自分类Dev

Javascript循环,异步功能和无头浏览器

来自分类Dev

在 javascript 中为数组循环创建异步函数?

来自分类Dev

javascript-如何等待node.js中的异步循环

来自分类Dev

javascript是否可以通过异步循环实现可变的并发问题

来自分类Dev

纯JavaScript +蓝鸟承诺异步for / while循环而无需使用NODE.JS

来自分类Dev

如何在继续之前等待 Javascript 同步循环内的异步回调完成

来自分类Dev

如何让这个 for...of 循环在继续之前停止并等待?(JavaScript 异步/等待 Firestore 侦听器)

来自分类Dev

异步循环不尊重异步

来自分类Dev

python中异步循环内的异步循环

来自分类Dev

循环的JavaScript?

来自分类Dev

异步JavaScript的设计模式

来自分类Dev

Javascript异步功能

来自分类Dev

JavaScript中的异步操作

来自分类Dev

JavaScript:异步函数

来自分类Dev

JavaScript Promise是否异步?

来自分类Dev

在JavaScript中使forEach异步

来自分类Dev

Javascript异步功能组成

来自分类Dev

异步JavaScript问题

来自分类Dev

异步javascript最佳做法