如何使用Q在promise中包装同步函数

时间:2016-07-11 05:58:41

标签: javascript mocha q

我正在使用mocha编写几个函数的集成测试,其中一些是同步,另一些是异步(返回Q promise)。

我有三个功能,ABC。每个函数返回一个值,供下一个函数使用 AC是同步的,但B会返回一个承诺。我需要按照A>的顺序调用它们B> C
如果它们都是同步的,它将如下所示:C(B(A(args)))

现在,我的代码看起来像这样:

it('should pass this test', function () {
  return B(A('args'))
  .then(result => Q(C(result)))
  .then(result => {
      // bunch of assert statements
  })
})  

我不喜欢这一行:.then(result => Q(C(result)))

bluebird中,我会.then(Promise.method(C)),但我必须在这种情况下使用Q,我在Q中找不到类似的方法。

有没有办法在Q中执行此操作?

1 个答案:

答案 0 :(得分:1)

您不需要包裹C

return B(A('args'))
  .then(C)
  .then(resultOfC => ...