Chrome Cookie API不是't不允许我使用返回值
Chrome Cookie API isn't letting me use returned values
我正在制作一个chrome扩展,它在用户登录时设置cookie。当我尝试使用chrome.cookies.get()
方法读取cookie时,回调可以记录结果,但我不能将其从回调中传递出去。
function getCookie (cookieName){
var returnVal;
chrome.cookies.get({
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
console.log(data); //log displays returned cookie in a object
returnVal=data;
}
);
console.log(returnVal); //log says this is undefined
return returnVal;
}
我尝试使用几种不同的方法来传递结果,但似乎对象是未定义的,除非从回调中调用它。
问题是在主函数返回后调用回调。(扩展API被称为异步是有原因的!)returnVal
未定义,因为它尚未被分配。尝试修改函数以接受回调参数:
function getCookie (cookieName, callback){
chrome.cookies.get({
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
callback(data);
});
}
// Use like this:
getCookie("CookieName", function(cookieData){
// Do something with cookieData
});
如果您不喜欢传递回调,也可以修改函数以返回deferred。如果您必须处理大量异步函数调用,那么延迟会让您的生活轻松很多。这里有一个使用jQuery的例子。递延:
function getCookie (cookieName){
var defer = new jQuery.Deferred();
chrome.cookies.get({
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
defer.resolve(data);
});
return defer.promise();
}
// Example use:
getCookie("FooBar").done(function(data){
// Do something with data
});
相关文章:
- XMLHttpRequest无法加载url Origin访问控制允许Origin不允许null
- 访问控制允许方法不允许删除
- http://0.0.0.0:4567访问控制允许来源不允许.使用Backbone&Firebase
- D3 Json请求获取XmlHttpRequest错误:访问控制允许原点不允许原点为null
- Jquery以使用WCF.错误:XMLHttpRequest无法加载Origin.访问控制允许Origin不允许null
- 检查数组是否包含允许或不允许的字符
- 简单<脚本>标记 - 访问控制允许原点不允许原点空
- XMLHttpRequest 无法加载 http://localhost:8089/jquery.访问控制允许原点不允许
- 访问控制允许原点不允许源 http://127.0.0.1
- 访问控制允许源不允许 AJAX 源空
- 交叉请求时出错:“访问控制允许源不允许源”
- 访问控制允许原点不允许原点
- 访问控制允许源不允许 http://example.com
- XMLHttpRequest 无法加载 url.预检响应中的访问控制允许方法不允许方法 PUT
- XMLHttpRequest 无法加载 URL.访问控制允许源不允许的源
- "访问控制允许原点不允许原点为null"使用jQuery调用web服务时出错
- Meteor Restivus:飞行前响应中的访问控制允许方法不允许方法PUT
- XMLHttpRequest无法加载“;此URL“;起源http://localhost:3000访问控制允许来源不允许
- 为什么我看到一个“;“访问控制允许起源”不允许起源;此处出现错误
- 推特:仅应用程序身份验证错误访问控制允许原点不允许原点为null