第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Promise return is inconsistent React Native

Promise return is inconsistent React Native

紅顏莎娜 2022-08-04 15:49:54
我正在使用一個(gè)調(diào)用API的庫(kù),我正在等待Promise返回接收數(shù)組。但是,即使我期望在 ActivityItem 數(shù)組中有 2 個(gè)元素,有時(shí)我只收到其中的第一個(gè)元素(首先出現(xiàn)的元素 (Item1)。從我的角度來(lái)看,我錯(cuò)誤地實(shí)現(xiàn)了承諾,我返回它們的方式應(yīng)該有錯(cuò)誤,但我錯(cuò)過(guò)了看到它。在這里,我調(diào)用應(yīng)該返回 Promise 的函數(shù): componentDidMount() {    this.getDataFromKit(ONEDAYINTERVAL).then(result => {    this.sendDataToServer(result); //sending to backend    }).catch(e => console.error);}這是一個(gè)方法本身:getDataFromKit(dateFrom) {    return new Promise((resolve) => {    AppleKit.initKit(KitPermissions.uploadBasicKitData(), (err, results) => {        if (err) {            return;        }    AppleKit.getSamples(dateFrom, (err, results) => {                if (err) {                    return resolve([]);                }                const newData = results.map(item => {                    return { ...item, name: "Item1" };                });                const allData = [...this.state.ActivityItem, ...newData];                this.setState({ ActivityItem: allData });                resolve(allData);            });        // if I delete the code below it will work just fine always grabbing only one item.        new Promise((resolve) => {         AppleKit.getSamplesSecondMethod(dateFrom, (err, results) => {            if (err) {                return resolve([]);            }            const newData = results.map(item => {                return { ...item, name: "Item2" };            });            const allData = [...this.state.ActivityItem, ...newData];            this.setState({ ActivityItem: allData });            resolve(allData);             });           });        });     })}這里的主要問(wèn)題是我猜:我如何從這一個(gè)方法返回多個(gè)承諾?
查看完整描述

1 回答

?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

在我看來(lái),問(wèn)題是你的第二個(gè)代碼塊沒(méi)有運(yùn)行,因?yàn)槟阏诮鉀Q第一個(gè)代碼塊中的承諾。按照編碼的方式,只有在完成所有異步操作后,您才需要解析該承諾。我修改了您的代碼,但尚未對(duì)其進(jìn)行測(cè)試。它可能需要添加該方法以確保在解析初始承諾之前返回異步數(shù)據(jù)。.then


如果你試試這個(gè)會(huì)發(fā)生什么?


更新


看起來(lái)下面的代碼解決了你的問(wèn)題,因?yàn)槟憬邮芰宋业拇鸢?。但是,在我意識(shí)到您接受之前,我確實(shí)重寫(xiě)了它,因此我將添加新的更新代碼,以防對(duì)您或其他人有所幫助。


原始答案


getDataFromKit(dateFrom) {


    const thenable = new Promise((resolve) => {

            AppleKit.initKit(KitPermissions.uploadBasicKitData(), (err, results) => {

                if (err) {

                    return;

                }



                AppleKit.getSamples(dateFrom, (err, results) => {

                    if (err) {

                        return resolve([]);

                    }

                    const newData = results.map(item => {

                        return {

                            ...item,

                            name: "Item1"

                        };

                    });


                    resolve(newData);


                });

            });

        })

        .then((newData) => {


            AppleKit.initKit(KitPermissions.uploadBasicKitData(), (err, results) => {

                if (err) {

                    return;

                }



                AppleKit.getSamplesSecondMethod(dateFrom, (err, results) => {

                    if (err) {

                        return;

                    }


                    var stateData = this.state.ActivityItem;


                    const addData = results.map(item => {

                        return {

                            ...item,

                            name: "Item2"

                        };

                    });

                    stateData = [...stateData, ...newData];

                    stateData = [...stateData, ...addData];


                    this.setState({

                        ActivityItem: stateData

                    });


                });



            });

        });

    return thenable;

}

使用 Promise.all 更新了代碼


getDataFromKit(dateFrom) {


    return new Promise((resolve) => {


        const promise1 = new Promise((resolve) => {

            AppleKit.initKit(KitPermissions.uploadBasicKitData(), (err, results) => {

                if (err) {

                    return Promise.reject(err);

                }



                AppleKit.getSamples(dateFrom, (err, results) => {

                    if (err) {

                        return Promise.reject(err);

                    }

                    const newData = results.map(item => {

                        return {

                            ...item,

                            name: "Item1"

                        };

                    });


                    return Promise.resolve(newData);


                });

            });

        });


        const promise2 = new Promise((resolve) => {


            AppleKit.initKit(KitPermissions.uploadBasicKitData(), (err, results) => {

                if (err) {

                    return Promise.reject(err);

                }



                AppleKit.getSamplesSecondMethod(dateFrom, (err, results) => {

                    if (err) {

                        return Promise.reject(err);

                    }


                    const moreData = results.map(item => {

                        return {

                            ...item,

                            name: "Item2"

                        };

                    });


                    return Promise.resolve(moreData);

                });

            });

        });



        Promise.all([promise1, promise2])

            .then(([result1, result2]) => {


                var nArrays = [result1, result2, this.state.ActivityItem];


                const finalResult = [].concat(...nArrays);


                return Promise.resolve(finalResult);


            });    

    });

}


查看完整回答
反對(duì) 回復(fù) 2022-08-04
  • 1 回答
  • 0 關(guān)注
  • 110 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)