我正在使用defer的.done等待在函数完成之前加载cookie。当我尝试运行代码时,它完成并返回undefined。似乎.done在第一个代码完成之前就已经开始了。
function getCookie(cookieName){
var value;
var defer = new jQuery.Deferred();
fetchCookie().done(
function(){
return value;
}
);
function fetchCookie(){
chrome.cookies.get(
{
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
console.log(data);
value=data.value;
}
);
return defer.promise();
}
}
//usage
var username=getCookie('username');
答案 0 :(得分:2)
延迟对象不会让您避免回调。你仍然需要做这样的事情(假设一切都正确实现):
getCookie('username').then(function(username){
console.log(username);
});
它只会产生不必要的开销。我宁愿做:
function getCookie(cookieName, callback){
chrome.cookies.get(
{
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
console.log(data);
value=data.value;
if(callback) {
callback(value);
}
}
);
}
//usage
getCookie('username', function(username){
console.log(username);
});