javascript - 如何 promise ?

标签 javascript promise bluebird

我有这样的功能:

someFunction.someMethod('param1', function(err, res1, res2) {
  req.method(res1, function(err) {
    if (!err) {
      console.log('Yes!');
    }
  });
})(req, res); // <-- This one's the problem!

现在当我尝试 promise 它时:

var a = Promise.promisify(someFunction.someMethod);

a('param1').spread(function(res1, res2) {
  console.log('Yes!');
}).catch(function(err) {

});

它不再起作用了,因为我无法将 (req, res) 放在它的末尾。如何实现这一目标?

最佳答案

我会尝试这个:

var a = Promise.promisify(function(arg, cb) {
    someFunction.someMethod(arg, cb)(req, res);
});

a('param1').spread(function(res1, res2) {
  console.log('Yes!');
}).catch(function(err) {

});

…是的,它很丑。然而,这个部分应用程序可能表明 someFunction.someMethod('param1', …) 返回的函数应该被多次调用;并且您的回调将被调用多次 - 您不能再使用 promise 。

关于javascript - 如何 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254104/

相关文章:

node.js - 用于使用同步代码模拟异步 promise 的 Bluebird 模式

node.js - Promises - 在 Promise.all 中捕获所有拒绝

javascript - 将经常使用的小型 jQuery 插件附加到 common.js 文件的末尾是否被认为是不好的做法或不道德?

javascript - Promise 链内的非 Promise 函数出现错误

javascript - NodeJs 错误处理 try catch block 中的 promise 错误

javascript - 如何在 javascript/typescript 中 promise 一个具有多个动态变量的映射函数

javascript - 顺序运行 Q Promise

javascript - 使用带有 Refs 和 Promise 的嵌套架构保存和查找 Mongoose 文档

javascript - 如何根据屏幕尺寸播放 2 个不同的视频?

javascript - 如何使用 javascript 使用正则表达式 + 和 - ?