承诺在非节点式回调上使用Bluebird
Promisification with Bluebird on not node-style callbacks
我正试图在https://github.com/seishun/node-steam-trade,但此库正在使用非节点回调。
例如(Babel的ES6语法):
import bluebird from 'bluebird';
import SteamTrade from 'steam-trade';
bluebird.promisifyAll(SteamTrade.prototype);
let steamTrade = new SteamTrade();
// some kind of set sessionid/cookies
let result = await steamTrade.openAsync('my-steam-id');
最后一行并没有结束,因为传入回调的第一个参数是"数据",而不是错误(文档)。
如何配置bluebird来处理第一个参数中的数据?
您可能需要使用when.js(https://github.com/cujojs/when/blob/master/docs/api.md#whenlift)
或者你可以写自己的Promise包装。
steamTrade.openAsync = function(id){
var promise = new bluebird( function(resolve, reject){
steamTrade.open(id, function(data){ resolve(data); });
});
return promise;
};
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 一旦加载并渲染了角度引导typeahead,就使用回调
- Bluebird.js:重新抛出catch回调中的错误不会再次被捕获
- Node.js:使用Bluebird将模块函数从回调转换为承诺
- 如何使用Bluebird.js nodeify将第三个参数传递给回调函数