草庐IT

promise-then

全部标签

javascript - 在 resolve 函数中返回 promise 作为它的延续

上下文我正在使用Angular。我有一个名为UserService的服务,它处理登录、身份验证和用户数据请求。get方法需要在发出get请求之前检查用户是否拥有有效(未过期)的身份验证token。因此,如果有,则发出请求;如果没有,则请求token,然后然后发出请求。问题这个get方法需要隐藏它的复杂请求。它只需要返回一个Promise,因为它只发出一个请求。所以,一个用法示例:UserService.get().then(data=>{...}).catch(error=>{...})错误的解决方案检查token是否过期。如果是,则返回刷新token的请求,然后发出并返回获取请求。如

javascript - Backbone JS Promises 在模型上设置属性之前解析

使用主干模型,假设它从服务器获取一些额外的属性(如“FirstName”和“LastName”),我有如下内容:varmyModel=newBackbone.Model({id:10});varmyOtherModel=newBackbone.Model({id:20});$.when(myModel.fetch(),myOtherModel.fetch()).done(function(){console.log(myModel.toJSON());});输出:{id:10}片刻后的输出:{id:10,FirstName:"Joe",LastName:"Schmo"}似乎Backbo

javascript - 如何打破 promise 中的循环?

我正在使用Bluebird库做一些QA(问题/答案)应用程序。所以这是场景:用户在表格中填写一些问题的答案(例如5个问题)。一个问题有不止1个可能的答案:“问题有很多答案”答案在数据库中使用node.bcrypt加密(bcrypt)在遍历答案时,如果用户答案匹配,则无需继续检查该问题的答案。所以这是同步做事时要解决的一个常见问题,但我有点迷失了用promise做异步。这是我不知道如何进行的示例:.then(function(answers){varcompare=Promise.promisify(bcrypt.compare);//foreachanswer,Ineedtocheck

javascript - 如何使用 Bluebird 在构造函数构建的 "class"上 promise 导出的函数

我有一个服务,PageService,我这样测试(简化)...vardatabase=require("../database/database");varPageService=require("./pageService");describe("PageService",function(){varpageService={};before(function(done){pageService=newPageService(database);}it("cangetallPages",function(done){pageService.getAll(function(err,pa

javascript - 重新定义 promise

Promise现在是es6中的全局保留字,并且linters会抛出错误。那么这样做有什么坑varPromise=require("bluebird");或者我应该做什么varBluebirdPromise=require("bluebird"); 最佳答案 只要不是全局的,重新声明promise似乎没有问题。但是第二种是更好的方法Manyofusdothat.There'snoproblem.You'rejustusingafasterimplementation,that'sall.Butnotethatyoumayusemore

javascript - Q promise 中的并发限制 - Node

有没有什么方法可以使用Qpromises库来限制promise的并发?这个问题有点相关HowcanIlimitQpromiseconcurrency?但问题是我正在尝试做这样的事情:for(vari=0;i实际用例是:从数据库中获取帖子循环数据库中的每个帖子,如posts.forEach(function(post){}对每个帖子执行任务1、任务2、任务3(检索社交计数器、检索评论计数等)在数据库中保存新的帖子数据。但问题是Node同时执行所有帖子的所有任务,比如同时向facebook询问500个帖子的“喜欢计数”。我如何限制Q.all()一次只有2个帖子在执行它们的任务?或者还有哪些

javascript - 在循环中链接嵌套的 promise

我对promises有点陌生,并且坚持以下练习。我有一组值,我想对每个值执行一个异步调用。在回调中,我想对第一次调用的结果执行另一个调用。基本上,我的挫败感在于:执行顺序应该是'1x2x3x'但是顺序是'123xxx'换句话说,当第一个promise的子/嵌套promise尚未完成时,循环已经进入下一次迭代。varvalues=["1","2","3"];functiondo(val){vardeferred=Q.defer();asyncCall(val).then(function(response){console.log(val);asyncCall(response).the

javascript - 使用 Bluebird promise bcrypt-nodejs

我正在使用NodeJS,bcrypt-nodejs(https://github.com/shaneGirish/bcrypt-nodejs)和Bluebird用于promises。想出了这段代码,并想知道是否有更好的方法来做同样的事情。我有模块:varPromise=require("bluebird"),bcrypt=Promise.promisifyAll(require('bcrypt-nodejs'));//....[someothecodehere]Users.prototype.setPassword=function(user){returnbcrypt.genSalt

javascript - 当我不使用 Promise 的 "then"函数时,是否有任何(负面)副作用?

我有一个返回Promise的函数。现在,有时消费者在该Promise上使用“then”函数是有意义的。但有时消费者根本不关心Promise何时解析,也不关心结果-换句话说,同样的函数也应该能够以“即发即弃”的方式调用。所以我想要这两种使用场景:func().then(...);//processPromisefunc();//"fireandforget"这显然有效,但我想知道这是否被视为“不良做法”,特别是这种使用模式是否会产生任何不良副作用,即。导致内存泄漏?现在我正在使用bluebird,但如果有任何不同,我会考虑切换到原生Promises。 最佳答案

javascript - Express 中间件、next 和 Promises

有一个非常简单的带有处理程序的Express路由器:router.get('/users/:userId/roles/:roleId',function(req,res,next){constroleId=req.params.roleId;res.rest.resource=UserModel.findOne({_id:req.params.userId}).exec().then(function(usr){console.log(req.params.roleId);//=>undefinedconsole.log(roleId);//=>okayhereconstresult=