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ます。コールバックはpromise を返す必要.thenありません。

あなた書くことができます

return Promise.resolve(changed_data);

しかし、繰り返しますが、必要はありません。return changed_data;同様に機能します。

于 2015-07-12T11:13:17.233 に答える