宣传同步功能

时间:2015-07-12 11:04:10

标签: javascript promise es6-promise

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

"Hello"

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

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

我是否应该更改doSomethingSync:

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

为:

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

1 个答案:

答案 0 :(得分:5)

  

我应该改变doSomethingSync,这是......

你不必改变一切。如果回调的返回值一个承诺,它将直接用于解析.then返回的承诺。 .then回调没有 来返回承诺。

可以

return Promise.resolve(changed_data);

但同样,没有必要。 return changed_data;也可以正常运作。