草庐IT

Bluebird

全部标签

javascript - Promise 和不定期的回调

我正在使用bluebird使用Promise控制流。.Bluebird提供了一个.promisify()方法,用于将常规回调函数转换为promise函数,但我不清楚当函数不规则时我应该做什么。例如requestjs的方法签名请求是request(url,callback)回调在哪里err,res,body而不是常规err,res我应该如何将其转换为promise? 最佳答案 Promise.promisify()也可以使用此类回调。当给出多个值时,它们只会在Array中传递:varPromise=require('bluebird'

javascript - then 和 finally in a promise 有什么区别?

我看到了Bluebird的finally的文档但我还是不太明白与then的区别。明确一点:我确切地知道为什么then在catch之后被调用。我希望在捕获后调用它。这就是意图。我的问题是:如果我希望代码始终被执行而不管promise状态如何,那么then与finally之间有什么区别?我构建了这个测试:varPromise=require("bluebird");functiontest1(){console.log("RESOLVE+THEN+CATCH+THEN");returnnewPromise((resolve,reject)=>resolve()).then(()=>cons

javascript - then 和 finally in a promise 有什么区别?

我看到了Bluebird的finally的文档但我还是不太明白与then的区别。明确一点:我确切地知道为什么then在catch之后被调用。我希望在捕获后调用它。这就是意图。我的问题是:如果我希望代码始终被执行而不管promise状态如何,那么then与finally之间有什么区别?我构建了这个测试:varPromise=require("bluebird");functiontest1(){console.log("RESOLVE+THEN+CATCH+THEN");returnnewPromise((resolve,reject)=>resolve()).then(()=>cons

javascript - Bluebird Promise 串行迭代,并解析到修改后的数组?

我有这个promise,如果在db中找不到新的Item文档,然后将其存储在以前创建的Collection文档中。..Collection文档是数组中的第一个字符串,数组中的任何后续索引都转换为一个或多个Item文档。Promise.each"Resolvestotheoriginalarrayunmodified"因此Promise.each中的最后一个return正在渲染对象,但随后的.then会生成原始数组..这是promise(为便于阅读而缩写):globalVar=true;collectionId="";varitemSeries=Promise.each(items,fun

javascript - Bluebird Promise 串行迭代,并解析到修改后的数组?

我有这个promise,如果在db中找不到新的Item文档,然后将其存储在以前创建的Collection文档中。..Collection文档是数组中的第一个字符串,数组中的任何后续索引都转换为一个或多个Item文档。Promise.each"Resolvestotheoriginalarrayunmodified"因此Promise.each中的最后一个return正在渲染对象,但随后的.then会生成原始数组..这是promise(为便于阅读而缩写):globalVar=true;collectionId="";varitemSeries=Promise.each(items,fun

javascript - 使用 sinon 和 bluebird 对 Promisified 函数进行 Stub

在我要测试的文件中,我有以下代码:varhttpGet=Promise.promisify(require("request").get);httpGet(endpoint,{auth:{bearer:req.body.access_token},json:true}).then(...)现在,在我的测试中,我想确保httpGet被调用一次,并确保参数有效。在被promise之前,我的测试是这样的:beforeEach(function(){request.get=sinon.stub().yields(null,null,{error:"testerror",error_descri

javascript - 使用 sinon 和 bluebird 对 Promisified 函数进行 Stub

在我要测试的文件中,我有以下代码:varhttpGet=Promise.promisify(require("request").get);httpGet(endpoint,{auth:{bearer:req.body.access_token},json:true}).then(...)现在,在我的测试中,我想确保httpGet被调用一次,并确保参数有效。在被promise之前,我的测试是这样的:beforeEach(function(){request.get=sinon.stub().yields(null,null,{error:"testerror",error_descri

javascript - 我违背了我的 promise

所以..我最难学习如何promise。我正在使用bluebird(https://github.com/petkaantonov/bluebird)正如向我建议的那样——为了驯服我一直在得到的回调hell。示例:functionlogin(req,res,con,mysql,P){varref=undefined;con.getConnection(function(err,connection){if(err)console.log("GetConnectionError.."+err);con.query('SELECTpassword,idFROMplayerWHEREname=

javascript - 我违背了我的 promise

所以..我最难学习如何promise。我正在使用bluebird(https://github.com/petkaantonov/bluebird)正如向我建议的那样——为了驯服我一直在得到的回调hell。示例:functionlogin(req,res,con,mysql,P){varref=undefined;con.getConnection(function(err,connection){if(err)console.log("GetConnectionError.."+err);con.query('SELECTpassword,idFROMplayerWHEREname=

javascript - 与 fs 和 bluebird 的 promise

我目前正在学习如何在nodejs中使用Promise所以我的第一个挑战是列出目录中的文件,然后使用异步函数通过两个步骤获取每个文件的内容。我提出了以下解决方案,但有一种强烈的感觉,这不是最优雅的方法,尤其是第一部分,我将异步方法“转换”为Promise//purposeistogetthecontentsofallfilesinadirectory//usingtheasynchronousmethodsfs.readdir()andfs.readFile()//andchainingthemviaPromisesusingthebluebirdpromiselibrary[1]//[