2016-05-01 5 views
1

私は情報が不足しているので、とても謝ります。Javascript Promiseベースの関数の使い方

私はオブジェクトを返すプロミスベースの関数を持っています。次に、別のオブジェクトを作成するためにそのプロパティからキー値を渡します。

私が作成している新しいオブジェクトがどこにあるのか、問題が発生しています。私はこれがJSの非同期性に起因すると考えていますか?

以下を参照してください。..

post(postObject).then((result) => { 
    console.log(result); // token found in returned object. See OBJ1 below 
    const cookie = { 
     name: 'jwtToken', 
     value: result.token, 
     path: '/', 
     domain: '.' + APP_HOST, 
     secure: false 
    }; 
    console.log(cookie); // result.token not returned. Getting undefined 
    page.addCookie(cookie); 
    }); 

cookie.valueは、私はクッキーの値としてresult.tokenを渡すことができるようにする必要があり

として未定義戻って来ています。

私はログ結果をコンソールに出力すると、生成されたトークンキーの値がわかります。

以下は「結果」から返される内容です。私はresultトークンをしているので、 'token'を保持しようとしています。しかし、これは私に「未定義」を常に与えています。

OBJ1:

{"token":"skjdhjkshds.sdhskjdhkshdjs.shdkjshdkjsh","isCartMerged":false} 
+0

ここで、「cookie」をコンソールログしますか?あなたがこの機能の外にログオンすると、あなたは空の文字列を得ることができます。 – raiyan

+0

何が起こっているかを表示するために私の質問にコンソールログを追加しました。 –

+2

はOBJ1が文字列として戻ってくるのですか? JSON.parse()を試すことができますか? [参照](https://jsfiddle.net/zn7c70oe/1/) – scottjustin5000

答えて

0

あなたのresultはJSON文字列であり、あなたがオブジェクトとして個々のプロパティで取得するために、それを解析する必要があると思われます。 .then()ハンドラの先頭にconsole.log(typeof result)を挿入して、それが文字列かオブジェクトかを確認して確認できます。

post(postObject).then((result) => { 
    console.log(typeof result);  // probably shows "string" 
    console.log(result); 
    var parsedResult = JSON.parse(result); 
    console.log(parsedResult); 
    const cookie = { 
     name: 'jwtToken', 
     value: parsedResult.token, 
     path: '/', 
     domain: '.' + APP_HOST, 
     secure: false 
    }; 
    console.log(cookie); 
    page.addCookie(cookie); 
    }); 
+0

ありがとうございました!それが解決した。それ。 –

関連する問題