【发布时间】:2012-04-08 10:52:33
【问题描述】:
我正在努力使用 deferred 将回调与管道链接起来。它似乎工作得很好,但在回调 2 中,它为我带来了来自回调 1 的数据。下面是代码的样子:
var getCall1 = function() {
return $.ajax(url, {
type: "GET",
data: { },
contentType: "application/json",
dataType: "json"
});
}
var getCall2 = function () {
return $.ajax(url, {
type: "GET",
data: {},
contentType: "application/json",
dataType: "json"
});
}
var callback1 = function (data)
{
alert('call 1 completed');
};
var callback2 = function (data)
{
alert('call 2 completed');
};
$.when(getCall1()).done(callBack1).pipe(getCall2()).done(callBack2);
我在这里错过了什么?
--编辑--
如果我将它们分成两个延迟调用,它可以工作,但是链接和管道有什么用?
$.when(getCall1()).done(callBack1);
$.when(getCall2()).done(callBack2);
--正确的做法--
var getCall1 = function() {
return $.ajax(url, {
type: "GET",
data: { },
contentType: "application/json",
dataType: "json"
});
}.pipe(function (d){return d});
var getCall2 = function () {
return $.ajax(url, {
type: "GET",
data: {},
contentType: "application/json",
dataType: "json"
});
}.pipe(function (d){return d});
var callback1 = function (data)
{
alert('call 1 completed');
};
var callback2 = function (data)
{
alert('call 2 completed');
};
$.when(getCall1, getCall2).done(function(d1, d2){
callback1(d1);
callback2(d2);
});
【问题讨论】:
-
您的示例代码中有错字吗? (应该是回调而不是驼峰回调)