将promise转换为同步函数

时间:2015-07-24 22:51:14

标签: javascript promise bluebird

如果我在addTwo下面有一个像这样的简单函数,我可以使用蓝鸟的Promise.method(addTwo)来做出承诺,即使它没有执行任何异步操作。有没有办法与此相反?

function addTwo(num){
  return num + 2
}

var newValue = addTwo(2) // => 4

addTwoPromise = Promise.method(addTwo)

addTwoPromise(2).then(function(newValue){
  console.log(newValue) // == 4
})

有没有办法再次将addTwoPromise从承诺转换为同步函数?我知道所有关于异步/等待的事情,我并不是那样寻找答案。

1 个答案:

答案 0 :(得分:5)

是的,您可以使用Promise.setScheduler明确违反Promises / a +规范,并强制bluebird同步运行then个回调。

请不要这样做,因为它只适用于同步的功能(不应该返回承诺),它会造成一场竞争状态。