我目前正在使用Chrome扩展程序。
content_script.js
$(document).ready(function(){
var IPToken;
function doSomething() {
chrome.runtime.sendMessage({method: "getToken"}, function(response) {
return response.token;
});
}
IPToken = doSomething();
console.log(IPToken);
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.method == "getToken")
sendResponse({token: localStorage["IPToken"]});// IPToken is just a string
});
IPToken
始终未定义。据我了解,这是因为该功能不会等待响应?如果是这样,在设置IPToken = doSomething()
之前如何确保响应已返回?
编辑: 我需要在另一个函数中进一步降低response.token
的值。这就是我尝试将值存储在var IPToken
中的原因。
更新:
function onComplete(a){ // When the code completes, do this
console.log(a);// this works, it returns the true result!!
return a;
}
function getToken(whenDone){
setTimeout(function(){
chrome.runtime.sendMessage({method: "getToken"}, function(response) {
whenDone(response.token);
});
},10);
}
var IPToken = getToken(onComplete);
console.log("Token is: "+IPToken);// undefined