草庐IT

promise-style

全部标签

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=

javascript - CasperJS/PhantomJS ES6 Promise Polyfill

我目前正在尝试使用PhantomJS和CasperJS来制作端到端测试。我遇到的是PhantomJS缺乏promise的情况。目前我们的项目实现了它们。该应用程序仅在原生支持promises的GoogleChrome中使用。在运行我的测试时我收到错误:错误:ReferenceError:找不到变量:Promise这似乎是因为PhantomJS中当前版本的Webkit不支持promise。我意识到SlimerJS确实通过Gecko获得了这种支持,但是我们的应用程序在Chrome中运行,因此我希望在Webkit中进行测试。我一直在努力解决的问题是将ES6promisepolyfill注入(

javascript - Promise、Promise/A 和 Promise/A+ 之间的区别

我已经阅读了Promise/A+规范,但据我了解,还有诸如Promise/A和Promise之类的东西。它们之间有什么区别?Promise和Promise/A规范也是如此吗?如果是这样,有什么区别?对不起,如果这个问题很愚蠢,因为我是主要的后端开发人员。提前致谢! 最佳答案 IsPromiseaspecificationaswell?没有。这只是一个具有上下文相关含义的术语。参见示例WhatarethedifferencesbetweenDeferred,PromiseandFutureinJavaScript?或theWikipe

javascript - 浏览器是否仍然默默地吞下未处理的拒绝 promise ? Node 呢?

有很多建议建议您确保不要让任何被拒绝的promise得不到处理。如果你不这样做,建议警告,错误将永远不会被注意到,并将被完全吞没。控制台不会打印任何内容。这个建议似乎已经过时了。当未处理被拒绝的promise时,现代浏览器和现代版本的Node似乎确实会打印警告。拿这段代码:asyncfunctionthisIsGoingToFail(){awaitPromise.reject();console.log('thisshouldnotprint,asthelineaboveshoulderror');}asyncfunctionmain(){awaitthisIsGoingToFail(