javascript - Bluebird 在非 Node 式回调上的 promise

标签 javascript node.js promise bluebird

我正在尝试调用 Bluebird promisificator https://github.com/seishun/node-steam-trade ,但该库使用非 Node 回调。

例如(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');

最后一行尚未完成,因为传递给回调的第一个参数是“数据”,而不是错误( docs )。

如何配置 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;
};

关于javascript - Bluebird 在非 Node 式回调上的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37259607/

相关文章:

javascript - 可以从一系列 promise 中删除 promise 吗?

node.js - 未处理的PromiseRejection警告: Insufficient funds

javascript - while 循环和 promise

javascript - 如何在 Angular js中使用nanoScroller

Javascript 正则表达式失败

javascript - electron 的 globalShortcut 将禁用原始按键

javascript - 如何使用 npm 库中的 web-worker 到主 webpack 项目中

javascript - OData V2 模型上的 Kapsel 离线应用程序的 SAPUI5 深度插入

java - 将 React 与 Nashorn 一起使用会抛出 "ReferenceError: "控制台“未定义”

javascript - 在 Node JS 中读取 Windows-1252 文件