我在我的 React Native 應用程序中將兩個 Promise 鏈接在一起時遇到了很多麻煩。第一個 Promise 成功獲取異步存儲中的值并將其設置為狀態。第二個 Promise 獲取我從 Firebase 獲得的數據,但取決于我從第一個 Promise 設置的狀態。任何幫助將不勝感激。import React, { useState, useEffect } from "react";import { Text, StyleSheet, View } from "react-native";import firebase from "../../firebase/fbConfig";import AsyncStorage from "@react-native-async-storage/async-storage";let DB = firebase.firestore();function Questions(props) { const [productId, setProductId] = useState(""); const [question, setQuestion] = useState(""); const [reward, setReward] = useState(""); const getAsyncData = () => { AsyncStorage.getItem("key").then((value) => setProductId(value)) // works fine // }; const getDataFromFirebase = (productId) => { DB.collection("ads") .where("productId", "==", productId) .get() .then(function (querySnapshot) { querySnapshot.forEach(function (doc) { setQuestion(doc.data().question); setReward(doc.data().reward); }); }) .catch(function (error) { console.log("Error getting documents: ", error); }); // works fine // }; useEffect(() => { getAsyncData().then((productId) => getDataFromFirebase(productId)); // does not work // }); return ( <> <View style={styles.container}> </View> </> );}export default Questions;
鏈接承諾,其中第二個承諾取決于第一個承諾的結果
慕森卡
2023-07-14 09:57:10