0

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

     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);
      });
      }
4

1 回答 1

5

我是否应该更改 doSomethingSync 是...

您不必全部更改。如果回调的返回值不是promise,则直接用于解析返回的promise .then.then回调不必返回承诺

可以

return Promise.resolve(changed_data);

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

于 2015-07-12T11:13:17.233 回答