我不清楚chrome.cookies接口。我想为3个不同的域getAll饼干,然后删除那些,等待这个过程完成,然后我想设置一些饼干。
如果我理解cookies chrome.cookies.getAll不返回promise,那么只有我可以定义一个回调。现在我很清楚,我可以为所有三个getAll cookies命令编写回调,但是在那里我再次删除了几个cookies,这个过程是异步进行的。所以我完全迷失在我如何识别时,3个域名的所有cookie已被完全删除。
我可以想到的一种选择是,我提前运行3次cookie.getAlls并计算cookies的数量,然后在每次删除时增加一个计数器,并在remove的回调中检查是否达到了总数。这看起来很奇怪,所以我不能相信这是正确的方法。
谢谢
发布于 2019-10-18 01:18:30
我不认为它是优化的,但这是一个快速的答案。
function RemoveCookies(cookies, domain){
for(var i=0; i<cookies.length;i++) {
chrome.cookies.remove({url: 'https://'domain + cookies[i].path, name:cookies[i].name});
}
}
function RemoveDomain1(callback, ...params){
chrome.cookies.getAll({domain: domain1}, function(cookies) {
RemoveCookies(cookies, domain1);
callback(params)
});
}
function RemoveDomain2(callback, ...params){
chrome.cookies.getAll({domain: domain2}, function(cookies) {
RemoveCookies(cookies, domain2);
callback(params)
});
}
function RemoveDomain3(callback, ...params){
chrome.cookies.getAll({domain: domain3}, function(cookies) {
RemoveCookies(cookies, domain3);
callback()
});
}
RemoveDomain1(RemoveDomain2, RemoveDomain3, DoSomthingAfterAll)
https://stackoverflow.com/questions/58209642
复制相似问题