将 promise 转换为同步函数

Convert promise to synchronous function

如果我有一个像下面这样的简单函数 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
})

有什么方法可以再次将 addTwoPromise 从 promise 转换为同步函数吗?我对 async / await 了如指掌,我并不是在寻找答案。

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

请不要这样做,因为它只适用于无论如何都是同步的函数(不应该 return promises 开始)并且它会产生一个地狱般的竞争条件。