将promise转换为同步函数

Tho*_*ggi 1 javascript promise bluebird

如果我有一个像下面这样的简单函数,addTwo我可以使用bluebird 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
})
Run Code Online (Sandbox Code Playgroud)

有没有办法再次addTwoPromise从承诺转换为同步功能?我知道关于异步/等待的所有内容,我不是那样寻找答案.

Ben*_*aum 5

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

请不要,因为它只适用于同步的功能(不应该返回承诺),它会创造一个竞争条件的地狱.