私は非同期JavaScriptの問題に遭遇しています。コールバックメソッドで受け取った値をオブジェクトリテラルとして保存できません。 Chrome拡張機能を作成してchrome.cookies.getAll
メソッドを使用しており、クッキーを取得してコールバックで読み取ることができますが、その値をオブジェクトに保存できません。私はまだオブジェクトと非同期JavaScriptのハングを取得していると実際にいくつかの助けを使用することができます。非同期chrome.cookies.getAllの結果を使用
console.log('session in object : ');
console.log(this.activeCookie['sid']);
this.activeCookie['sid']
がnull
後にコールバックが実行されるため
は、ここでは、コード
var app = {
init: function() {
this.activeCookie = {
'sid': null
};
this.setupSession();
// shows null
console.log('session in object : ');
console.log(this.activeCookie['sid']);
},
setupSession: function() {
var that = this;
function setCookiesAsync(that, cookie) {
console.log(cookie);
for(var i=0; i<cookie.length; ++i) {
if(cookie[i]['name'] === 'sid') {
that.activeCookie['sid'] = cookie[i]['value'];
// shows a token
console.log('session in callback : ');
console.log(that.activeCookie['sid']);
}
}
}
chrome.cookies.getAll({
'url': ST.BaseUrl
}, function (cookie) {
setCookiesAsync(that, cookie);
});
}
};
です。
私は、非同期メソッドは、オブジェクトに保存しますので、私はオブジェクトに値を保存することができますし、setupSession()
が完了した後、コードの次の行を実行する方法を疑問に思って。
が、それは_really_共通の話題です。 – Xan
うん、私はこれについて束を読んで、ここでいくつかの素晴らしい記事を見たが、オブジェクトに値を保存することはできません知っている。私はそれを開いたままにできますか?それを開いたままにすることはできますか? – user1807880
あなたの 'init'関数は本質的に非同期でもあります。なぜなら、' init'が想定されているコードが本当に実行されるようにするためには、コールバックを取る必要があります後で実行します(つまり、 'setCookiesAsync'の終わりに) – Xan