如何监听 Request complete 事件?或者如何取回响应对象
How to listen for Request complete event? Or how to get response object back
我对 Firefox 扩展和 javascript 完全陌生。我有这样的东西:
var json = JSON.parse(links);
for (var i = 0; i < json.length; i++) {
var link = json[i];
Request({
url: link.url,
onComplete: function (response) {
console.log(response.status);
}
}).get();
}
现在我需要根据响应对象的状态做一些事情。但我想继续我的 for 循环,因为我需要 link 对象...
在请求 https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/request 的文档页面上提到了 'complete' 事件,该事件在返回响应后发出,但我真的不知道如何监听这样的事件。
我真的不知道如何解决这个问题,但这是我需要的结果:
var json = JSON.parse(links);
for (var i = 0; i < json.length; i++) {
var link = json[i];
Request({
url: link.url,
onComplete: function (response) {
// something
}
}).get();
// I need RESPONSE object here
if(response.status == 404) {
// do something with link object
}
}
您是否无法检查定义在 onComplete 上的函数中的响应?你到底想做什么?
例如:
var json = JSON.parse(links);
for (var i = 0; i < json.length; i++) {
var link = json[i];
Request({
url: link.url,
onComplete: function (response) {
if(response.status == 404) {
// do something with link object
}
}
});
}
onComplete
被异步调用。对于这些情况,您需要 'save' 在 closure.
中对 link 对象的引用
var fetchAndProcess = function(link) {
Request({
url: link.url,
onComplete: function(response) {
if (response.status == 404) {
console.log(link); // 'saved' in fetchAndProcess
// do something with link object
}
}
}).get();
};
var json = JSON.parse(links);
for (var link of json) {
fetchAndProcess(link);
}
我对 Firefox 扩展和 javascript 完全陌生。我有这样的东西:
var json = JSON.parse(links);
for (var i = 0; i < json.length; i++) {
var link = json[i];
Request({
url: link.url,
onComplete: function (response) {
console.log(response.status);
}
}).get();
}
现在我需要根据响应对象的状态做一些事情。但我想继续我的 for 循环,因为我需要 link 对象...
在请求 https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/request 的文档页面上提到了 'complete' 事件,该事件在返回响应后发出,但我真的不知道如何监听这样的事件。
我真的不知道如何解决这个问题,但这是我需要的结果:
var json = JSON.parse(links);
for (var i = 0; i < json.length; i++) {
var link = json[i];
Request({
url: link.url,
onComplete: function (response) {
// something
}
}).get();
// I need RESPONSE object here
if(response.status == 404) {
// do something with link object
}
}
您是否无法检查定义在 onComplete 上的函数中的响应?你到底想做什么?
例如:
var json = JSON.parse(links);
for (var i = 0; i < json.length; i++) {
var link = json[i];
Request({
url: link.url,
onComplete: function (response) {
if(response.status == 404) {
// do something with link object
}
}
});
}
onComplete
被异步调用。对于这些情况,您需要 'save' 在 closure.
var fetchAndProcess = function(link) {
Request({
url: link.url,
onComplete: function(response) {
if (response.status == 404) {
console.log(link); // 'saved' in fetchAndProcess
// do something with link object
}
}
}).get();
};
var json = JSON.parse(links);
for (var link of json) {
fetchAndProcess(link);
}