0

chrome.history.searchhttp://developer.chrome.com/extensions/history.html#method-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()を実行したときのバックグラウンドページコンソールからの出力は次のとおりです。 出力

ご覧のとおり、戻りオブジェクトがあり、console.log(results [0] .url)は機能していますが、コールバックは未定義の値を返しています。適切なURLを返すようにこれを回避するにはどうすればよいですか。

ありがとう。

4

1 に答える 1

2

自分でそれを行う方法を考え出しました。これは、クロム拡張 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
});

これがこれに出くわした人に役立つことを願っています!

于 2012-11-19T23:24:04.343 に答える