2

チェーンに対して返されたデータが最初の遅延データであることに問題があります。最初の例は動作します:

api.getData().done(function(data){
  api.getData2().done(
    function(data2){
      $.log('success', data2);
    });
  });

しかし、2 番目の例は、2 番目の.then () に data2 を使用して動作する必要がありますが、何らかの理由で data1 と同じです。

api.getData().then(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});

助言がありますか?

4

2 に答える 2

1

したがって、いくつかの調査の後、JQuery Deferred.Pipe .then をチェーンできないことがわかりましたが、代わりに以下のようなパイプを使用する必要があります (.pipe() はチェーン可能です):

api.getData().pipe(function(data1){
  return api.getData2();
}).then(
function(data2){
  $.log('success', data2);
});
于 2012-11-20T17:04:15.693 に答える
1

$.whenは、promise を返す 2 つの非同期関数を受け入れ、両方が完了すると .then() 関数を実行します。

$.when( api.getData(), api.getData2() ).done(function(data, data2) {
    $.log('success', data2);
});

何らかの理由で (データが必要な場合など) のgetData()前に実行する必要がある場合、最初の例はそれに対して十分に有効であるように思われるgetData2()ため、本当に は必要ありませんか?.then()

于 2012-11-20T16:47:37.840 に答える