如何使用 q 来承诺一个函数以及如何管理错误处理?

How to promisify a function using q and how to manage error handling?

我有一个功能,我已经承诺使用 'es6-promisify'。我想使用 'q'.

复制功能

这是我正在使用的示例代码:

const promisify = require('es6-promisify')

function asyncFunction (done) {
  console.time('asyncFunction')
  setTimeout(() => {
    console.timeEnd('asyncFunction')
    done()
  }, 500)
}

const asyncFunctionPromise = promisify(asyncFunction)

此外,假设我在 运行 我承诺的上述功能时遇到错误。我该如何处理这些错误?

我今天在 'q' 库中捣鼓了好久,终于想出了一个办法。

这是我所做的,很简单,现在我想起来了。

const q = require('q')

function asyncFunction (done) {
  console.time('asyncFunction')
  setTimeout(() => {
    console.timeEnd('asyncFunction')
    done()
  }, 500)
}

const asyncFunctionPromise = q.denodeify(asyncFunction)

只是代替

const promisify = require('es6-promisify')

使用

const q = require('q')

并替换

const asyncFunctionPromise = promisify(asyncFunction)

const asyncFunctionPromise = q.denodeify(asyncFunction)

关于错误处理:处理函数内的错误。 Promise 自动处理这些错误。

PS:你也可以使用q.deferred来创建Promises。它的语法类似于 jQuery.deferred.

希望这对那些有违背承诺(双关语意)问题的人有所帮助。