通过 $.when 传播进度通知
Propagating progress notifications through $.when
我正在尝试获取进度通知 (deferred.notify
) 以传播到 $.when:
创建的承诺
var d1 = $.Deferred(),
d2 = $.Deferred(),
w = $.when(d1, d2);
w.progress(function(x) { $('pre').append(String(x)+'\n'); });
d2.notify('d2');
d1.notify('d1');
d2.notify('d2-2');
d1.notify('d1-2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre></pre>
进度回调见
undefined
d1
d1
d1-2
怎么回事?
正在使用多个参数调用您的进度回调,每个参数一个用于传递给 .when()
的承诺,但您的处理程序只接受一个。
来电是:
undefined d2 d2.notify('d2')
d1 d2 d1.notify('d1')
d1 d2-2 d2.notify('d2-2')
d1-2 d2-2 d1.notify('d1-2')
如果您查看第一列,您会发现这正是您所看到的。
var d1 = $.Deferred(),
d2 = $.Deferred(),
w = $.when(d1, d2);
w.progress(function(x, y) { snippet.log(x + ", " + y) });
d2.notify('d2');
d1.notify('d1');
d2.notify('d2-2');
d1.notify('d1-2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
参数基于附加的 Deferreds。所以第一个是针对 d1 的,因为之前没有消息是 passed/set,所以它是未定义的。
var d1 = $.Deferred(),
d2 = $.Deferred(),
w = $.when(d1, d2);
w.progress(function (d1Notify, d2Notify) {
var x = d1Notify + "|" + d2Notify;
$('pre').append(String(x)+'\n');
});
d2.notify('d2');
d1.notify('d1');
d2.notify('d2-2');
d1.notify('d1-2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre></pre>
我正在尝试获取进度通知 (deferred.notify
) 以传播到 $.when:
var d1 = $.Deferred(),
d2 = $.Deferred(),
w = $.when(d1, d2);
w.progress(function(x) { $('pre').append(String(x)+'\n'); });
d2.notify('d2');
d1.notify('d1');
d2.notify('d2-2');
d1.notify('d1-2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre></pre>
进度回调见
undefined
d1
d1
d1-2
怎么回事?
正在使用多个参数调用您的进度回调,每个参数一个用于传递给 .when()
的承诺,但您的处理程序只接受一个。
来电是:
undefined d2 d2.notify('d2')
d1 d2 d1.notify('d1')
d1 d2-2 d2.notify('d2-2')
d1-2 d2-2 d1.notify('d1-2')
如果您查看第一列,您会发现这正是您所看到的。
var d1 = $.Deferred(),
d2 = $.Deferred(),
w = $.when(d1, d2);
w.progress(function(x, y) { snippet.log(x + ", " + y) });
d2.notify('d2');
d1.notify('d1');
d2.notify('d2-2');
d1.notify('d1-2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
参数基于附加的 Deferreds。所以第一个是针对 d1 的,因为之前没有消息是 passed/set,所以它是未定义的。
var d1 = $.Deferred(),
d2 = $.Deferred(),
w = $.when(d1, d2);
w.progress(function (d1Notify, d2Notify) {
var x = d1Notify + "|" + d2Notify;
$('pre').append(String(x)+'\n');
});
d2.notify('d2');
d1.notify('d1');
d2.notify('d2-2');
d1.notify('d1-2');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre></pre>