Tag: 蓝鸟

如何在.then()链中访问以前的承诺结果?

我已经将我的代码重组为承诺 ,并构build了一个美妙的长平诺言链 ,由多个.then()callback组成。 最后,我想返回一些复合值,并需要访问多个中间承诺结果 。 但是,从序列中间的分辨率值不在最后一次callback的范围内,我该如何访问它们? function getExample() { return promiseA(…).then(function(resultA) { // Some processing return promiseB(…); }).then(function(resultB) { // More processing return // How do I gain access to resultA here? }); }

如何将现有的callbackAPI转换为承诺?

我想使用承诺,但我有一个格式的callbackAPI: 1. DOM负载或其他一次性事件: window.onload; // set to callback … window.onload = function(){ }; 2.普通callback: function request(onChangeHandler){ … request(function(){ // change happened }); 3.节点样式callback(“nodeback”): function getStuff(dat,callback){ … getStuff("dataParam",function(err,data){ } 4.具有节点样式callback的整个库: API; API.one(function(err,data){ API.two(function(err,data2){ API.three(function(err,data3){ }) }); }); 我如何在承诺中使用API​​,如何“promisify”呢?

什么是明确的承诺build设反模式,我如何避免它?

我正在编写的代码看起来像这样: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.Deferred() etc. | // using a promise constructor myPromiseFn(param+1) | myPromiseFn(param+1) .then(function(val) { /* or .done */ | .then(function(val) { d.resolve(val); | resolve(val); }).catch(function(err) { /* .fail */ | […]

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

我正在使用蓝鸟库,需要进行一系列的HTTP请求,并需要一些响应数据到下一个HTTP请求。 我已经构建了一个处理我的请求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 […]