node.js - 为什么结果不是我在 Nodejs promise 中所期望的?

标签 node.js promise

我在 Node.js 中为 bluebird 编写了测试代码,如下所示:

var Promise = require(‘bluebird’)
var obj = {
      func1: function () {
               return ‘foo’
      },
      func2: function () {
              return ‘bar’
      }
}
console.log("==================================")
Promise.promisifyAll(obj)

obj.func1Async().then(function (result) {
      console.log(result)
})

我期望打印“foo”,但实际上没有输出。 有什么问题吗?

最佳答案

看了一会儿,Bluebird promisify 似乎适用于 Node 样式的函数,如下所示:

  • 首先可以接受 0..N 个参数
  • 最后一个参数始终是回调
  • 回调需要按顺序使用(错误、数据)参数调用。

所以在你的情况下,代码应该是:

var obj = {
  func1: function (cb) { // note if you add params they need to be before cb and always passed when invoking the func1Async version
    cb(null, 'foo'); // null => no error
  },
  func2: function (cb) {
    cb(null, 'bar'); // null => no error
  }
}

然后就可以了。丑陋 - 但它应该是这样的。

关于node.js - 为什么结果不是我在 Nodejs promise 中所期望的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485025/

相关文章:

javascript - node.js 在控制台显示 "undefined"

reactjs - 如何在 TypeScript 中使用 React、Redux 进行 API 调用

javascript - 尽管尽可能地捕获拒绝,但仍收到 UnhandledPromiseRejectionWarning

javascript - 有没有办法在准确的时间履行 promise ?

javascript - 在 if 语句中使用 child_process.exec 的返回值?

node.js - heroku 上的 socket.io 请求 404

javascript - 如何处理 Node.js 中基于 Promise 的业务级函数中的错误返回对象?

javascript - HackHands Satellizer 示例 - 意外的 token 问题

node.js - 为什么下面的函数输出未定义

Angular2 "Output"回调