2017-12-06 7 views
0

私はが良いと思っています。非同期の意味はJavaScriptで分かります。
私は、コールバック関数のようなものを使用して、非同期関数から変数を変更できることをよく知っています。電子クッキーを正しく取得する(非同期)

ただし、Electronのクッキーでこれを使用する方法はわかりません。
は私が何を意味私が実行してクッキーを取得することができ、次のとおりです。

function getCookie(name) { 

    // 'ses' refers to 'mainWindow.webContents.session' 
    ses.cookies.get({name: name}, function(err, cookie) { 
     if (err) throw err; 
     console.log(cookie[0].value); 
    }); 

} 

I簡単に出力でき、コンソールへのクッキー。しかし、これは非同期なので、どのように変数を設定するのか分かりません。

  • どうすればこの問題を解決できますか?コールバックを使用することができないため、 'cookies.get'メソッド内で変数フォームを設定するにはどうすればよいですか?
+0

なぜあなたはコールバックを使用することはできませんか? – Luca

+0

関数(err、cookie)は、少なくとも私が試したときに、別のパラメータを持つことはできません。 –

+1

あなたのgetCookie()はできますか? – Luca

答えて

0

あなたはグローバル変数の使用を試みる場合があります:

var cookieLoaded = false; 
function getCookie(name) { 
    // 'ses' refers to 'mainWindow.webContents.session' 
    ses.cookies.get({name: name}, function(err, cookie) { 
     if (err) throw err; 
     console.log(cookie[0].value); 
     cookieLoaded = true; 
    }); 
} 

//in other parts of the code... 
//you probably want this to be in events, like click handlers, etc. 

if (cookieLoaded) { 
    //DO STUFF 
} else { 
    alert('You are not authenticated'); 
    //or, disable buttons, etc. 
} 
+0

ええ、でもそれが問題です。 * cookieLoaded *は非同期なので変更されません。それが私がこのポストを作った理由です:)私はLuca Kiebelのアドバイスに従って修正することができました:)とにかくおかげで! –

+1

よろしくお願いします。 –

関連する問題