Javascript then() 链接 - Deferred 第二个 then() 对应于哪个
Javascript then() chaining - which Deferred does the second then() correspond to?
1( 我有一个 jquery 链 then((,像这样:
someAjax().then(function(val) { console.log("done 1: " + val); return val + 1; },
function(val) { console.log("fail 1: " + val); return val + 2; },
function(val) { console.log("prog 1: " + val); return val + 3; }
).then(function(val) { console.log("done 2: " + val) },
function(val) { console.log("fail 2: " + val) },
function(val) { console.log("prog 2: " + val) }
)
我知道第一个then((的三个函数(三个参数(对应于someAjax((中延迟对象的状态。
但是,我不明白,第二个函数(args(对应于哪个延迟对象?例如,如果(或者有可能(第一个 then(( 的三个函数中的每一个都可以返回自己的 Deferred 对象,该怎么办?
我觉得我可能误解了这里的一些东西。感谢任何澄清。
///
2(我还有另一个这样的链接:
$.getJSON(url).then(
doneFunction1,
errorFunction1
).then(
doneFunction2
});
doneFunction1 看起来像这样:
function doneFunction1(val){
if(val > 1)
return $.ajax(url2);
}
因此,如您所见,这并不总是返回承诺,具体取决于val
。如果它没有返回承诺(例如 val <1(,那么第二个如何进行?这会导致错误吗?因为据我了解,没有承诺可以调用 then((。我的猜测是,它可能只是调用第一个$.getJSON
承诺的 then((,但我可能是错的。
基本上,我试图在"val <1"时根本不有第二个then()
。可能吗?
您可以只返回已解决或拒绝的延迟
function doneFunction1(val){
if(val > 1) {
return $.ajax(url2);
} else {
var def = $.Deferred();
return def.reject(); // or def.resolve('something'); to hit the success handler
}
}
$.getJSON(url).then(
doneFunction1,
errorFunction1
).then(
doneFunction2,
errorFunction2 // only needed if you want to catch the error
});
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 我可以获得相对于被点击元素的确切点击位置吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 哪个先执行
- 如何包含特定于每个视图angularjs的javascript文件
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- Javascript日期格式类似于ISO,但本地
- Javascript then() 链接 - Deferred 第二个 then() 对应于哪个
- 如何知道当前回调用于哪个调用
- AngularJS,如何使UI依赖于哪个字段具有焦点
- 哪个类等效于 GWT 中 Javascript 的对象 window.document
- 有没有办法指定我想在 JS anon 函数中使用哪个“这个”,类似于 Java 的方式
- 哪个 jQuery 事件处理程序适用于页面加载
- RxJS序列等效于promise.then()
- 哪个javascript函数类似于parsefloat,它将语言环境作为参数
- 类似于jQuery when/then的东西:带break的延迟执行
- Javascript,确定在函数中选择了哪个按钮,类似于iOS中的(id)sender
- 如果我追加的内容似乎只依赖于.append()调用,那么在数据连接期间我将哪个项传递给d3.selectAll()有关系
- 哪个资源相当于" gl_多边形"在Three.js
- jQuery在并发ajax请求/then/失败时:哪个请求失败