在继续使用Javascript之前,我该如何等待回复?

时间:2015-10-08 01:15:47

标签: javascript jquery google-chrome-extension

我目前正在使用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

0 个答案:

没有答案