Tag: 蓝鸟

蓝鸟Promise.all – 多个承诺完成聚合成功和拒绝

今天有人用蓝鸟提出一个有趣的案例,处理多重承诺的最佳方式是什么,我们不想停止某个履行或拒绝,而是对检查最终结果感兴趣。 一个例子: var p1 = new Promise(function(f,r){ setTimeout(function(){ console.log("p1"); f("yay"); }, 100); }); var p2 = new Promise(function(f,r){ setTimeout(function(){ console.log("p2"); r(new Error("boo")); }, 200); }) var p3 = new Promise(function(f,r){ setTimeout(function(){ console.log("p3"); r(new Error("yay")); }, 300); }); var p4 = new Promise(function(f,r){ setTimeout(function(){ console.log("p4"); f("yay"); }, 400); }); //Promise.all([p1,p2, p3, p4]).then(function(p){ // console.log("Results:",p); //}).error(function(e){ // […]

如何链接和分享先前的结果与承诺

我正在使用蓝鸟库,需要进行一系列的HTTP请求,并需要一些响应数据到下一个HTTP请求。 我已经构build了一个处理我的请求callhttp()的函数。 这需要一个URL和一个POST的正文。 我这样称呼它: var payload = '{"Username": "joe", "Password": "password"}'; var join = Promise.join; join( callhttp("172.16.28.200", payload), callhttp("172.16.28.200", payload), callhttp("172.16.28.200", payload), function (first, second, third) { console.log([first, second, third]); }); 第一个请求获取需要传递给第二个请求的API密钥等等。 如何从第一个请求获取响应数据? UPDATE 这是callhttp函数: var Promise = require("bluebird"); var Request = Promise.promisify(require('request')); function callhttp(host, body) { var options = { url: 'https://' + host […]

用Node.js中的promise来replacecallback

我有一个简单的节点模块连接到一个数据库,并有几个function来接收数据,例如这个function: dbConnection.js: import mysql from 'mysql'; const connection = mysql.createConnection({ host: 'localhost', user: 'user', password: 'password', database: 'db' }); export default { getUsers(callback) { connection.connect(() => { connection.query('SELECT * FROM Users', (err, result) => { if (!err){ callback(result); } }); }); } }; 该模块将从另一个节点模块中被调用: app.js: import dbCon from './dbConnection.js'; dbCon.getUsers(console.log); 我想用promise来代替callback来返回数据。 到目前为止,我已经阅读了以下线程中的嵌套承诺: 使用嵌套承诺编写干净的代码 ,但是我找不到任何对此用例来说足够简单的解决scheme。 使用承诺返回result的正确方法是什么?