課題
現在console.logの結果がPromissで返ってきてしまっている。
こちらを変数に保存できるように設定したい
javascirpt
1 const self = this; 2 this.db = firebase.firestore() 3 this.db.collection("posts") 4 .where("word", "==", text) 5 .orderBy("createdAt", "asc") 6 .get() 7 .then((query) => { 8 var buff = []; 9 query.forEach((doc) => { 10 var data = doc.data(); 11 buff.push([doc.id, data]); 12 }); 13 var sentence1 = buff[0][1].sentence 14 var sentence2 = buff[1][1].sentence 15 var sentenceAll= [] 16 sentenceAll.push(sentence1) 17 sentenceAll.push(sentence2) 18 19 self.sentenceArray = sentenceAll 20 console.log("test1",self.sentenceArray); 21 22 }) 23 .catch((error)=>{ 24 console.log(`データの取得に失敗しました (${error})`); 25 }); 26 27 console.log("test2",self.sentenceArray); 28 29 });
javascript
1 data() { 2 return { 3 sentenceArray: [] 4 }; 5 },
現在firebaseからデータをとってくる処理をしたいのですが、sentenceArrayの中身をコンソールで表示すると、promiseResultと表示されてしまいます。
javascirpt
1Promise {<pending>} 2__proto__: Promise 3[[PromiseState]]: "fulfilled" 4[[PromiseResult]]:
調べたところ、.thenで書いている中のデータが非同期処理されているので、このままでは変数に代入できないみたいです。
こちらでは正しく表示されるが、
jaavascript
1console.log("test1",self.sentenceArray);
test2だと
console.log("test2",self.sentenceArray);
javascirpt
1Promise {<pending>} 2__proto__: Promise 3[[PromiseState]]: "fulfilled" 4[[PromiseResult]]:
こちらの結果が返ってきます。
test2のコンソールでも[[PromiseResult]]を返さずに通常通りデータを表示させる方法が知りたいです。
わかる方いたら回答をお願いいたします。
参考
https://knews.vip/q/so77162792/promise-result-o-hensu-toshite-hozonsuru-hoho-wa-arimasu-ka-fukusei
あなたの回答
tips
プレビュー