如何监听 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);
}