嘿同事Chrome Devs,如果chrome.extension.sendRequest
失败了,怎么会检测?我试过这个,没有骰子:
chrome.extension.sendRequest({ /* message stuff here */ }, function(req){
if(req == null || chrome.extension.lastError == null){
alert("No response. :(");
}
});
但接下来发生的事情就是回调甚至不会发生,这正是我预期的一半。有没有办法检测sendRequest何时失败?
谢谢!
答案 0 :(得分:0)
你需要改变....
if(req == null || chrome.extension.lastError == null){
alert("No response. :(");
}
...到......
if(req == null){
alert("No response. :( and the error was "+chrome.extension.lastError.message);
}
正如文档所说的sendRequest If an error occurs while connecting to the extension, the callback will be called with no arguments and chrome.extension.lastError will be set to the error message.
http://code.google.com/chrome/extensions/extension.html#method-sendRequest
http://code.google.com/chrome/extensions/extension.html#property-lastError
答案 1 :(得分:0)
你可以用try{}catch(err){}
包围它来捕获任何抛出的错误,但是如果没有响应则不会抛出错误,并且也没有空响应。
这可以通过设计完成,以允许消息接收者做到这一点。例如,它可能涉及一些Web服务请求,或者可能需要一段时间的ajax请求。
如果你知道响应需要多长时间,你应该实现一个超时(如果sendRequest函数包含一个就好了)
所以,你可以这样做:
var noResponse = setTimeout(100, function() {
alert('No response received within 100ms!');
});
chrome.extension.sendRequest({ /* message stuff here */ }, function(req){
clearTimeout(noResponse);
alert('I have a response!');
});