Open laiqun opened 5 years ago
首先要理解promise: https://www.liaoxuefeng.com/wiki/1022910821149312/1023024413276544 promise表示函数立即执行,然后用then和catch传入成功和错误处理的函数。 然后理解generate: fun*(){ while(true){ yield; } } g = fun(); //g是一个generate对象,然后每次调用g.next都会执行到yield返回。
async function aa()
{
console.log("aa");
await new Promise(resolve=>{ setTimeout( ()=>{console.log("xx");resolve("ok");},10 )});
console.log("bb");
}
"google.com, pub-8319785630586631, DIRECT, f08c47fec0942fa0"
(async() => { await setLocalStorage({ aaa: 1, bbb: 2 });
let aaa = await getLocalStorage("aaa");
let bbb = await getLocalStorage("bbb");
let all = await getLocalStorage();
console.log(aaa);// 1
console.log(bbb);// 2
console.log(all);// {aaa: 1, bbb: 2}
})();
function setLocalStorage(obj) { return new Promise( (resolve) => { chrome.storage.local.set( obj, () => resolve() ); }); }
function getLocalStorage(key = null) { return new Promise( (resolve) => { chrome.storage.local.get(key, (item) => { key ? resolve(item[key]) : resolve(item); }); }); }
for (let i =0;i<8;i++) chrome.tabs.create({"active":false,'url':"http://127.0.0.1/"+i}); let newTabsId=[]; let tabsState ={};//ready ; wait两种选项 chrome.tabs.onCreated.addListener(function(tab) { newTabsId.push(tab.id); newTabsId["tab.id"] = "ready"; if(newTabsId.length == 8)//8个tab已经创建完成,开始浏览页面 { for (const iterator of newTabsId) { chrome.tabs.update(iterator,{url:"http://127.0.0.1/"+iterator}); //只要打开url即可,content script 会自动把数据抓好,给background //content script怎么知道数据可以抛了呢? //发信息确认一下后台的stage } } }); //爬完后关闭所有的tab for (const iterator of newTabsId) { chrome.tabs.remove(iterator); }
// 监听来自content-script的消息 chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { console.log('收到来自content-script的消息:'); console.log(request, sender, sendResponse); sendResponse('我是后台,我已收到你的消息:' + JSON.stringify(request)); //可以得知哪个url已经完成,如果完成,那就把该标签卡的状态,设置为ready,表示可以接下一次任务了
});
之前的代码
是这样的
改了之后是这样的
图形秒出
我明白了
类似于range 和xrange