Dojo xhr chaining
Dojo xhr chaining
我有以下延迟对象:
var base = xhr.get({
url: config.baseUrl + base_query,
handleAs: "json",
load: function(result) {
widget.set('value', result);
},
error: function(result) {
}
});
当这个GET请求完成时,我需要使用第一个base
:的结果执行第二个URL请求
var d1 = base.then(
function(result) {
xhr.get({
url: config.baseUrl + result.id,
handleAs: "json",
load: function(result) {
widget.set('visibility', result);
},
error: function(result) {
}
})
},
function(result) {
}
);
它运行良好。但是,我如何根据base
的结果而不是一个而是两个或多个请求(如d1
)?是否可以组合任何d1
、d2
、…、。。。,dn
在一个延迟对象中,并使用then
将其连接到base
对象?
没错。您可以在base
:上无限次调用then
var d1 = base.then(fn1),
d2 = base.then(fn2),
…
请注意,虽然它目前可能工作正常,但d1
并不代表任何结果——由于您没有从回调中返回任何内容,因此链已断开。实际上,您应该返回第二个请求的承诺:
var base = xhr.get({
url: config.baseUrl + base_query,
handleAs: "json"
});
base.then(widget.set.bind(widget, 'value'));
// or: dojo.hitch(widget, widget.set, 'value') if you like that better
var d1 = base.then(function(result) {
return xhr.get({
// ^^^^^^
url: config.baseUrl + result.id,
handleAs: "json"
});
});
d1.then(widget.set.bind(widget, 'visibility'));
相关文章:
- 中止POST XHR可靠
- Dojo XHR将200 OK视为错误
- Chrome扩展:XHR后关闭窗口
- XHR不适用于聊天应用程序
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 通过XHR请求将MYSQL数组从PHP返回到Javascript
- 将GET参数添加到q.io.xhr
- Winjs.xhr、Visual Studio和脱机服务器
- 访问通过XHR.onreadystatechange回调中的XHR.send(data)发送的数据
- 如何检索AMD的XHR响应代码(+时间戳)'大型Dojo
- 正在发送请求中包含数组的qx.io.request.Xhr请求
- XHR请求的CSRF预防
- onReadyStateChange未在XHR请求的IE中激发
- 在浏览器刷新时保存XHR渲染状态
- Testing XHR with Jest
- 终止所有正在进行的XHR请求
- 有没有办法清除客户端上的XHR缓存数据
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- 在使用量角器进行e2e测试时记录xhr请求
- Dojo xhr chaining