ترتیب اجرای middleware ها

پرسیده شده
فعالیت 975 روز پیش
دیده شده 414 بار
0

سلام وقتتون بخیر

من قسمت آخر ویدیو رو متوجه نشدم.

شما گفته بودید  از آخرین middleware وقتی next میکنیم میره و dispatch اجرا می شه ولی اخر ویدیو یه log دیگه بعد از next داشتیم و اون هم در آخر اجرا شد 

لطفا یه توضیحی بدید چرا این اتفاق افتاد.

ممنون

فایل پیوست

علیرضا ایمانی
علیرضا ایمانی

5 شهریور 00

0
حذف شده

کد زیر رو در نظر بگیرید:

console.log(1);
foo();
console.log(2);

در اینجا foo یک تابع هست که حالا فرقی نمیکنه که داخلش چه لاجیکی داره! منطقا نباید مشکلی داشته باشی که بعد از اجرای تابع foo عملیات لاگ عدد ۲ انجام بشه!

حالا کدی زیر رو در نظر بگیر:

const print1 = storeApi => next => action => {
    console.log('Action: ', action);
    next(action)
    console.log('new state: ', storeApi.getState())
}

این هم تقریبا مشابه همون حالت! یک تابعی داریم به اسم next که کاری نداریم چه کدی داخل نوشته شده، بعد از اینکه اجرای کدهای اون تموم بشه میرسیم به خط بعدی که داره new state رو لاگ میکنه

فایل پیوست

مجتبی سوری

توسط

مجتبی سوری

8 شهریور 00

0
حذف شده

سلام

اگر امکانش هست دقیقه ای که در این مورد صحبت میشه یا کدش رو قرار بدید که بتونم در موردش توضیح بدم چون کلا اینجا داره لاگ انجام میشه و نمیدونم منظورتون کدوم یکی هست

فایل پیوست

مجتبی سوری

توسط

مجتبی سوری

6 شهریور 00

0
حذف شده

تو این قسمت کد که شما تو دو دقیقه آخر ویدیو نوشتید اول لاگ ها print1 ,print2 ,print3 اجرا شد به ترتیب و بعد اومد اخرین لاگ بعد از next توی print1 اجرا شد 

من متوجه نمیشم چرا بعد از print3 دوباره برمیگرده و این لاگ رو اجرا میکنه

اگر next رو return کنیم که مشکل حله ولی می خوام بدونم وقتی return نمیکنیم چرا این اتفاق می افته؟

ممنون

 

const print1 = storeApi => next => action => {
    console.log('Action: ', action);
    next(action)
    console.log('new state: ', storeApi.getState())
}

function print1(storeApi) {
    return function wrapDispatch(next) {
        return function handlAction(action) {
            console.log(1);

            next(action)
            console.log('new State :', storeApi.getState());
        }
    }
}

function print2(storeApi) {
    return function wrapDispatch(next) {
        return function handlAction2222(action) {
            console.log(2);

            next(action)
        }
    }
}

function print3(storeApi) {
    return function wrapDispatch(next) {
        return function handlAction(action) {
            console.log(3);

            next(action)
        }
    }
}


const store = createStore(rootReducer, preloadedState, applyMiddleware(print1, print2, print3))

export default store
فایل پیوست

علیرضا ایمانی

توسط

علیرضا ایمانی

7 شهریور 00