首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测chrome.extension.sendRequest故障

检测chrome.extension.sendRequest故障
EN

Stack Overflow用户
提问于 2012-04-10 10:39:08
回答 2查看 539关注 0票数 1

嘿,Chrome开发者的朋友们,当chrome.extension.sendRequest出现故障时,人们该如何去检测呢?我试过了,没有发现:

代码语言:javascript
复制
chrome.extension.sendRequest({ /* message stuff here */ }, function(req){
    if(req == null || chrome.extension.lastError == null){
        alert("No response. :(");
    }
});

但发生的情况是,回调甚至从未触发,这是我所期望的一半。当sendRequest出现故障时,有什么方法可以检测到吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-04-10 18:25:58

你需要改变...

代码语言:javascript
复制
if(req == null || chrome.extension.lastError == null){
    alert("No response. :(");
}

...to...

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2012-04-10 19:06:55

您可以使用try{}catch(err){}将其括起来以捕获抛出的任何错误,但如果没有响应,则不会抛出错误,并且也没有null响应。

这应该是设计好的,允许消息接收者做它自己的事情。例如,它可能涉及几个web服务请求,或者可能需要一段时间的ajax请求。

如果您知道响应需要多长时间,就应该实现一个超时(如果sendRequest函数包含一个超时就更好了)。

所以,你可以这样做:

代码语言:javascript
复制
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!');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10082478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档