2015-02-23 64 views
0

某處可能存在明顯的錯誤,但我無法找出錯誤。JavaScript函數在預期值時返回空字符串

我想從api中檢索數據,並使用下面的js函數來獲取它。如果我對$ .get-函數內部的數據執行警報(密鑰),它會警告正確的數據。

function getApiKey(company, password) { 
    var url = "http://myapi.com/" +company+ "?password=" +password; 
    var key = ""; 

    $.get(url).done(function(data) { 
     key = data; 
     //alert(key) returns the correct data 
    }); 

    return key; 
} 

但是,我需要在不同的文件中使用該功能,這就是它不工作的地方。當我做

var key = getApiKey("company", "password"); 
    alert(key); 

鍵是空的。

+1

你不能這樣做。 [這個答案解釋了爲什麼,並顯示一些解決方案](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call) – Spokey 2015-02-23 14:18:49

回答

2

$ .get命令是異步的,這意味着你的函數返回鍵的初始值爲「」,然後當異步回調觸發時,它運行key = data。

您應該閱讀javascript中的異步行爲 - 對於解決方案,您需要一些方法將數據異步獲取回調用位置。其中一個選項是promise