2012-11-19 110 views
0

我試圖從回調chrome.history.search返回最後一個URL http://developer.chrome.com/extensions/history.html#method-search返回從chrome.history.search字符串()回調

到目前爲止,我的方法是這樣的:

var getLastUrl = function() { 
    chrome.history.search({ 
     text: '', 
     maxResults: 1 
    }, function(results) { 
     console.log(results); 
     console.log(results[0].url); 
     return 'Return value: ' + results[0].url; 
    }); 
}; 

這裏是我的背景網頁控制檯運行getLastUrl當輸出() output

正如你可以看到有一個返回對象和執行console.log(結果[0]的.url)的工作,但回調返回一個未定義的價值..我怎麼能解決這個問題,以便它返回正確的網址?

謝謝。

回答

2

想象一下如何做到這一點,這是因爲鉻擴展api的異步性質,這幫助我How to make a function wait until a callback has been called using node.js

基本上我得到了未定義,因爲該函數沒有等待回調(因爲它是異步的)而完成的。的

所以與其做

var getLastUrl = function() { 
chrome.history.search({ 
    text: '', 
    maxResults: 1 
}, function(results) { 
    console.log(results); 
    console.log(results[0].url); 
    return 'Return value: ' + results[0].url; 
}); 
}; 

var lastUrl = getLastUrl(); 

我編輯的功能,看起來像:

getLastUrl(function(lastUrl) { 
    // now you can use lastUrl here 
}); 

希望這有助於人誰:

var getLastUrl = function(callback) { 
chrome.history.search({ 
    text: '', 
    maxResults: 1 
}, function(results) { 
    console.log(results); 
    console.log(results[0].url); 
    callback(results[0].url); 
}); 
}; 

然後,您可以使用訪問網址穿過這個!