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

用户3306881

关于如何使用bluebird promises从for / while循环调用异步函数的问题似乎有很多答案,但是据我所知,所有这些都需要node.js才能工作(例如promise.method()或process)。 nextTick();例如:使用bluebird的while循环promises)。有什么办法可以在普通的js + blue bird中做到这一点?谢谢你的时间。

本杰明·格伦鲍姆(Benjamin Gruenbaum)

好吧,一旦某个东西成为了一个诺言返回函数-您实际上并不在乎库为您照顾的环境:

Promise.delay(1000); // an example of an asynchronous function

这个问题上的转换功能,以保证返回的。

现在,一旦有了这种功能,循环就变得很简单了:

function whileLoop(condition, fn){
    return Promise.try(function loop(val){
          return Promise.resolve(condition()).then(function(res){
              if(!res) return val; // done
              return fn().then(loop); // keep on looping
          });
    });
}

这会让您执行以下操作:

var i = 0; 
whileLoop(function(){
   return i < 10; // can also return a promise for async here
}, function body(){
    console.log("In loop body");
    i++;
    return Promise.delay(1000);
}).then(function(){
    console.log("All done!");
});

为了演示在浏览器中的工作原理,这是一个JSFiddle

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

蓝鸟的node.js承诺循环架构

来自分类Dev

Node.js中的承诺蓝鸟的麻烦

来自分类Dev

蓝鸟承诺循环

来自分类Dev

蓝鸟的异步承诺处理

来自分类Dev

Node.JS - 承诺异步/等待示例

来自分类Dev

蓝鸟承诺使用,是否泄漏?

来自分类Dev

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

来自分类Dev

如何使Node.js需要纯JavaScript的功能

来自分类Dev

如何使用mocha.js测试纯JavaScript模块

来自分类Dev

使用纯Javascript选择和修改元素集合而无需循环

来自分类Dev

Node.js的承诺:异步推送到数组并保存

来自分类Dev

Node.js的承诺:异步推送到数组并保存

来自分类Dev

Node.js承诺,异步或仅回调

来自分类Dev

Node.js承诺异步/等待无法正常工作

来自分类Dev

在JavaScript / node.js中使用A +进行While循环

来自分类Dev

如何使用纯 javascript 像 angular js 一样循环 div

来自分类Dev

JavaScript承诺猫鼬和蓝鸟缺少捕获和失败

来自分类Dev

循环内的异步承诺

来自分类Dev

从 Rest api 异步获取数据并使用 node.js 将它们加载到 mongodb - 使用承诺

来自分类Dev

在Node.js程序中运行纯JavaScript查询是否存在安全问题?

来自分类Dev

蓝鸟承诺过滤器。为什么要使用数组?

来自分类Dev

Node JS:如何承诺 For 循环

来自分类Dev

如何在 angular 上使用纯 javascript 库 hashids.js?

来自分类Dev

使用纯JavaScript代替coffeeScript

来自分类Dev

使用纯JavaScript解析JSON

来自分类Dev

使用纯JavaScript的XHR调用

来自分类Dev

对Javascript对象使用纯函数

来自分类Dev

使用纯Javascript提交表单

来自分类Dev

使用纯 JavaScript 触发添加