0

cacheListenerオブジェクト内のメソッドを非同期的に実行する次の呼び出しがあります。

ohttp.asyncOpenCacheEntry(url, 4, cacheListener);

コールバックオブジェクト/関数は次のようになります。

var cacheListener = {
    onCacheEntryAvailable: function(arg1, arg2, arg3) {
    // do something.
    }
}

私がやろうとしているのは、そのコールバックに引数を追加することです。呼び出しの最後に、次に関数定義に3番目の引数を追加しようとしましたが、次のように正しく渡されません(最後にmyArg)。

    ohttp.asyncOpenCacheEntry(url, 4, cacheListener, myArg);

コールバックオブジェクト/関数は、追加の引数を使用すると次のようになります。

var cacheListener = {
    onCacheEntryAvailable: function(arg1, arg2, arg3, myArg) {
    // do something.
    }
}

myArgは、予想どおりに渡されません。また、引数を適切に渡すことができる構造を作成する方法がわかりません。

ご協力いただきありがとうございます、

4

1 に答える 1

2

コールバックを使用しているコードを制御しない場合は、それをまとめる必要があります。このようなもの:

ohttp.asyncOpenCacheEntry(url, 4, cacheListener, {
    onCacheEntryAvailable: function(arg1, arg2, arg3) {
        cacheListener.onCacheEntryAvailable(arg1, arg2, arg3, myArg);
    }
});

コールバックオブジェクトに他のメソッドがある場合は、それらもラップする必要があります。

于 2011-10-20T01:13:05.710 に答える