【问题标题】:How to promisify a function using q and how to manage error handling?如何使用 q 承诺函数以及如何管理错误处理?
【发布时间】:2018-04-12 10:58:13
【问题描述】:

我有一个使用“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 重写什么。否则很难知道如何为您提供帮助。
  • 它现在对我有用
  • @Joel:文档真的很有帮助。

标签: javascript node.js promise es6-promise q


【解决方案1】:

我今天在 '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 来创建 Promise。它的语法与 jQuery.deferred 相似。

希望这可以帮助解决有关违反承诺的问题(双关语。)

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2015-07-29
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多