Javascript 从chrome.history.search()回调返回字符串

Javascript 从chrome.history.search()回调返回字符串,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在尝试从chrome.history.search中的回调返回最后一个URL 到目前为止,我的方法如下所示: var getLastUrl = function() { chrome.history.search({ text: '', maxResults: 1 }, function(results) { console.log(results); console.log(results[0].url);

我正在尝试从chrome.history.search中的回调返回最后一个URL

到目前为止,我的方法如下所示:

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()时后台页面控制台的输出

如您所见,存在一个返回对象和控制台。日志(结果[0].url)正在工作,但回调返回了一个未定义的值。。我怎样才能绕过这个问题,让它返回正确的url


谢谢。

我自己找到了解决方法,这是因为chrome扩展api的异步特性,这对我很有帮助

基本上,我没有定义,因为函数没有等待回调就完成了(因为它是异步的)

因此,与其这样做

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();
我对函数进行了如下编辑:

var getLastUrl = function(callback) {
chrome.history.search({
    text: '',
    maxResults: 1
}, function(results) {
    console.log(results);
    console.log(results[0].url);
    callback(results[0].url);
});
};
然后,您可以使用以下方式访问url:

getLastUrl(function(lastUrl) {
  // now you can use lastUrl here
});
希望这有助于任何人谁遇到这个