首页 > 解决方案 > Reactjs promise.all 调用顺序

问题描述

我正在尝试获取studentDataPromise之前的内容,fetchLoansPromise因为它取决于数据studentDataPromise返回。

这是我当前的代码:

Promise.all([studentDataPromise, fetchclassesPromise, fetchLoansPromise])
        .then(() => {
            toggleIsReady();
        })
        .catch(error => {
            throw new Error(error);
        });

这是当前的事件顺序:

  1. toggleIsReady最初设置为 false,但现在为 true。
  2. fetchLoansPromise- 无法获取它没有studentDataPromise获取
  3. studentDataPromise- 正确获取它
  4. toggleIsReady- 现在设置为假
  5. fetchclassesPromise- 正确获取它

有什么建议么?

标签: reactjspromise

解决方案


这就是我解决它的方法,现在'fetchStudentData'在'fetchLoansPromise'之前解决。

    let studentDataPromise = null;
    let fetchClassesPromise = null;
    let fetchLoansPromise = null;
    useEffect(() => {
        studentDataPromise = fetchStudentData();
    }, []);

    useEffect(() => {
        fetchClassesPromise = fetchClasses();
    }, []);

    useEffect(() => {
        fetchLoansPromise = resolveStudentDataPromise();
    }, []);
    async function resolveStudentDataPromise() {
        await Promise.all([studentDataPromise]);
        fetchLoans();
    }

    Promise.all([studentDataPromise, fetchClassesPromise, fetchLoansPromise])
        .then(() => {
            toggleIsReady();
        })
        .catch(error => {
            throw new Error(error);
        });

谢谢大家


推荐阅读