Chrome扩展中的Ansynchronous JS

时间:2017-02-07 09:10:52

标签: javascript google-chrome asynchronous google-chrome-extension

我无法确定如何异步使用Chrome扩展程序代码。 docs

  

chrome。* API中的大多数方法都是异步的:它们会立即返回,而不必等待操作完成。如果您需要知道该操作的结果,那么您将回调函数传递给该方法。该回调在稍后(可能更晚)执行,在方法返回后的某个时间执行。

var lastScrollPosition = 0; window.onscroll = function() { var newScrollPosition = window.scrollY; if (newScrollPosition < lastScrollPosition){ //upward - code here }else{ //downward - code here } lastScrollPosition = newScrollPosition; } 上的documentation似乎暗示它是异步的,因为它需要一个在所有JavaScript执行完毕后调用的回调。

尽管已经意识到这一点,但我很难找到如何使用脚本执行的优势。

以下是executeScript中的内容:

example.js

var firstWords = "data:text/csv"; document.addEventListener('DOMContentLoaded', function() { chrome.tabs.query({ currentWindow: true }, function(tabs) { tabs.forEach(function(tab) { chrome.tabs.executeScript(tab.id, { file: "getFirstWord.js" }, function(result) { console.log("result of executeScript: ", result); firstWord = result[0]; firstWords += firstWord; console.log("firstWords: ", firstWords) }); console.log("AFTER EXECUTESCRIPT firstWords: ", firstWords) }); console.log("AFTER FOREACH firstWords: ", firstWords) }); console.log("AFTER QUERY firstWords: ", firstWords) }); console.log("AFTER EVERYTHING firstWords: ", firstWords)

getFirstWord.js

有点不出所料,输出不是我想要的:

console.log("hello from getFirstWord.js");
document.title.match(/\w*/)[0]

最终目标是累积所有所需数据的字符串(并转换为CSV)。

是否有某种AFTER EVERYTHING firstWords: data:text/csv AFTER QUERY firstWords: data:text/csv AFTER EXECUTESCRIPT firstWords: data:text/csv AFTER EXECUTESCRIPT firstWords: data:text/csv AFTER EXECUTESCRIPT firstWords: data:text/csv AFTER FOREACH firstWords: data:text/csv result of executeScript: ["Asynchronous"] firstWords: data:text/csvAnsynchronous result of executeScript: ["Washington"] firstWords: data:text/csvAnsynchronousWashington result of executeScript: ["Chicago"] firstWords: data:text/csvAnsynchronousWashingtonChicago 类型的方法或其他一些使用回调的方法,以便在查询完成后我可以实际使用累积的结果?

0 个答案:

没有答案
相关问题