从chrome.history.search()回调中返回一个字符串

时间:2012-11-19 22:33:19

标签: javascript google-chrome-extension

我正在尝试从chrome.history.search http://developer.chrome.com/extensions/history.html#method-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(results [0] .url)正在工作,但是回调函数返回了一个未定义的值..我怎样才能解决这个问题,以便它返回正确的url?

感谢。

1 个答案:

答案 0 :(得分:2)

弄清楚如何自己做,这是因为chrome扩展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();

我编辑了这个函数:

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

然后您可以使用以下方式访问网址:

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

希望这可以帮助任何遇到此问题的人!