【发布时间】:2015-06-25 06:42:57
【问题描述】:
我正在编写一个调用谷歌翻译 api 的 chrome 扩展程序。一旦我得到翻译的单词,我想将它添加到一个数组中,但我相信它是异步的,我不确定如何将它传递给数组,以便它在主线程上可用。
var translatedWords = ["hola"];
var text = "what";
var key="******************";
var source="en";
var dest="es";
$.ajax({
type: "GET",
url: "https://www.googleapis.com/language/translate/v2key="+key+"&source="+source+"&target="+dest+"&q="+text
}).done(function(response) {
//SET Translated word
var WordTranslated = response.data.translations[0].translatedText;
//populate into array
translatedWords.push(WordTranslated);
}).fail(function(response) {
console.log("FAILURE: " + JSON.stringify(response));
});
console.log("translatedWords " + JSON.stringify(translatedWords));
这个输出
translatedWords ["hola"]
它现在应该在哪里
translatedWords ["hola","que"]
我怎样才能做到这一点?谢谢!
【问题讨论】:
-
将 console.log 放入 done 处理程序中。
-
有没有办法在 done 处理程序之外访问响应?这就是我的 background.js 中的全部内容,我在脚本的其他地方对我的 translateWords 数组进行了很多调用。
-
一旦收到这些词,它们就会在您的 translateWords 数组中。将 console.log 放在 done 处理程序中只是为了向您显示请求正在工作。
-
所以我遍历了选项页面中的数组,但它只显示了一项。我像这样访问它 var background = chrome.extension.getBackgroundPage(); var translateWords = background.translatedWords;我有什么特别需要做的吗?
-
我应该用 set 保存数组然后进入我的选项页面吗?
标签: javascript ajax google-chrome-extension google-translate