承诺同步功能

Promisifying an synchorous function

所以,我有一个类似这样的代码。

     getSomethingAsync(something)
     .then(doSomethingAsync)
     .then(function(d) {
     _d = doSomethingSync(d);
     return doSomethingAsyncNext(_d);
     })
     .then(function(val) {
      //All done
      })
      .catch(err_handler);

我想把它做成类似的东西。

     getSomethingAsync(something)
     .then(doSomethingAsync)
     .then(doSomethingSync)
     .then(doSomethingAsyncNext)
     .then(function(val) {
      //All done
      })
      .catch(err_handler);

我应该只更改 doSomethingSync 吗:

      function(data) {
      // do a lot of things with data, throw errors for invalid data
      return changed_data;
      }

至:

      function(data) {
      // do a lot of things with data, throw errors for invalid data
      return new Promise(function(resolve,reject){
      resolve(changed_data);
      });
      }

或:

      function(data) {
      return new Promise(function(resolve,reject){
      // do a lot of things with data, reject for invalid data
      resolve(changed_data);
      });
      }

Should I just change doSomethingSync which is ...

您不必全部更改。如果回调的 return 值 不是 承诺,则直接用于解析由 .then 编辑的承诺 return。 .then 回调没有 到 return 的承诺。

可以

return Promise.resolve(changed_data);

但同样,没有必要。 return changed_data; 也可以。