草庐IT

Bluebird

全部标签

javascript - 如何在没有 "indentation pyramids"的情况下正确表达任意 Promise 链?

这个问题在这里已经有了答案:HowdoIaccesspreviouspromiseresultsina.then()chain?(17个答案)关闭5年前。Q.reduce和Q.all等方法有助于在异类promise集合的特定情况下扁平化promise链。不过,请注意一般情况:constF=(x)=>x;consta=F(1);constb=F(2);constc=F(a+b);constd=F(a+c);conste=F(b+c);console.log(e);也就是说,一系列赋值,每个术语都依赖于先前定义的任意术语。假设F是一个异步调用:constF=(x)=>Q.delay(100

javascript - Bluebird promise 多个参数

我是Promises的新手,不知道如何解决这个问题:我正在做一个身份验证系统,我的第一个电话是检查数据库中的电子邮件。如果用户存在,则根据bcrypted密码检查密码...我将此库用于bcrypt:https://npmjs.org/package/bcrypt这与promises不兼容,所以我对以下签名使用“promisify”:compare(password,crypted_pa​​ssword,callback)。所以这是我的代码:varcompare=Promise.promisify(bcrypt.compare);User.findByEmail(email).then(

javascript - nodeJS 中的 promise / promise /执行顺序中的回调不正确

当我链接多个promise时,我希望每个promise仅在前一个promise结束后执行。不知何故它不会发生。我确信使用promises是错误的,希望得到一些解释。我有这个代码:varPromise=require('bluebird');func('A').then(()=>{func('B')}).then(()=>{func('C')}).then(()=>{func('D')})functionfunc(arg){returnnewPromise(function(resolve){console.log('>>'+arg);setTimeout(function(){cons

javascript - 使用 promises 时如何在 Javascript 中出现异常后重试?

我正在使用Bluebirdpromise库。我有一系列promise的功能,如下所示:receiveMessageAsync(params).then(function(data)){return[data,handleMessageAsync(request)];}).spread(function(data,response){return[response,deleteMessageAsync(request)];}).spread(function(response,data){returnsendResponseAsync(response);}).then(function

javascript - node.js 链接多个 promise (使用 Mongoose )

以下是我正在处理的一个典型的promise函数。var_delete=function(t,id){returnPromise.cast(Event.find({where:{id:id}},{transaction:t})).then(function(d){if(d){//-------(*)returnPromise.cast(d.updateAttributes({status:-1},{transaction:t})).then(function(){//doinventorystuffreturnPromise.cast(Inventory.update({}).exec(

javascript - `Q.when` 的 Bluebird 等价物是什么?

切换到Bluebird来自Q,我只是想确保它在文化上是正确的:是否有等同于Q.when(someValue);或Q(someValue);的东西?是Promise.resolve(someValue);吗? 最佳答案 IsitPromise.resolve(someValue);?是的。 关于javascript-`Q.when`的Bluebird等价物是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

javascript - 使用 nodejs 、 express 和 mongoose 的 bluebird Promisies crud 示例

我的friend们,不幸的是我找不到任何关于如何在nodejsexpressmongoose应用程序中实现bluebirdpromise库的示例。我的应用程序设置中Mongoose模型、Controller和路由位于不同的文件中。但是用mongoose实现它,我就是想不通。所以请有人告诉我它是如何使用的。请看下面。//expresscontrollerArticle.jsvarmongoose=require('mongoose'),errorHandler=require('./errors'),Article=mongoose.model('Article');exports.li

javascript - 使用 Bluebird.js 和 Twitter 流的 promise 和流

我是Promises和Node的新手,对在流中使用promises感到好奇。我可以promise一个流吗?使用Bluebirdjs和Twit模块我有以下内容:varTwit=require('twit')varPromise=require("bluebird");varT=newTwit({consumer_key:process.env.CONSUMER_KEY,consumer_secret:process.env.CONSUMER_SECRET,access_token:process.env.ACCESS_TOKEN,access_token_secret:process.e

javascript - 等待循环内的 promise

letcurrentProduct;for(leti=0;i{update(subs,currentProduct);});}我正在使用bluebird,方法getAll和update返回promise。我怎么能说“等到两个promise返回,然后更新currentProduct值”?我对JS很陌生...... 最佳答案 如果您可以使用async/await,这将很简单://Makesurethatthiscodeisinsideafunctiondeclaredusing//the`async`keyword.letcurrent

javascript - 在 Javascript 中缓存和预取过期的 promise

Promises是我在Javascript中管理异步代码的首选方式。Memoize(npm上的memoizee)是一个Javascript库,用于轻松缓存和预取函数结果。理想情况下,我想结合两者的优点,并且能够“过期”一个Promise并预取一个新的Promise结果(当缓存被触及并接近过期时)。Memoize可以做到这一点,但它并没有考虑到Promises。(我知道Promises有一个内置的“永远缓存”,这是它们的本质,但是永远对我的应用程序来说太长了)到目前为止,我最好的尝试如下(使用bluebird、memoize和underscore的node.js示例):varmemoiz