这个问题在这里已经有了答案: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
我是Promises的新手,不知道如何解决这个问题:我正在做一个身份验证系统,我的第一个电话是检查数据库中的电子邮件。如果用户存在,则根据bcrypted密码检查密码...我将此库用于bcrypt:https://npmjs.org/package/bcrypt这与promises不兼容,所以我对以下签名使用“promisify”:compare(password,crypted_password,callback)。所以这是我的代码:varcompare=Promise.promisify(bcrypt.compare);User.findByEmail(email).then(
当我链接多个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
我正在使用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
以下是我正在处理的一个典型的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(
切换到Bluebird来自Q,我只是想确保它在文化上是正确的:是否有等同于Q.when(someValue);或Q(someValue);的东西?是Promise.resolve(someValue);吗? 最佳答案 IsitPromise.resolve(someValue);?是的。 关于javascript-`Q.when`的Bluebird等价物是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow
我的friend们,不幸的是我找不到任何关于如何在nodejsexpressmongoose应用程序中实现bluebirdpromise库的示例。我的应用程序设置中Mongoose模型、Controller和路由位于不同的文件中。但是用mongoose实现它,我就是想不通。所以请有人告诉我它是如何使用的。请看下面。//expresscontrollerArticle.jsvarmongoose=require('mongoose'),errorHandler=require('./errors'),Article=mongoose.model('Article');exports.li
我是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
letcurrentProduct;for(leti=0;i{update(subs,currentProduct);});}我正在使用bluebird,方法getAll和update返回promise。我怎么能说“等到两个promise返回,然后更新currentProduct值”?我对JS很陌生...... 最佳答案 如果您可以使用async/await,这将很简单://Makesurethatthiscodeisinsideafunctiondeclaredusing//the`async`keyword.letcurrent
Promises是我在Javascript中管理异步代码的首选方式。Memoize(npm上的memoizee)是一个Javascript库,用于轻松缓存和预取函数结果。理想情况下,我想结合两者的优点,并且能够“过期”一个Promise并预取一个新的Promise结果(当缓存被触及并接近过期时)。Memoize可以做到这一点,但它并没有考虑到Promises。(我知道Promises有一个内置的“永远缓存”,这是它们的本质,但是永远对我的应用程序来说太长了)到目前为止,我最好的尝试如下(使用bluebird、memoize和underscore的node.js示例):varmemoiz