Я работаю над проектом React и использую Mobx для магазинов.Я правильно работаю в магазине, сохраняю данные без проблем.Одна проблема, с которой я сталкиваюсь, это то, что я вызываю несколько функций, и кажется, что они выполняются задом наперед, и я не могу понять это.Я перечислю код ниже, если кто-то может взглянуть на него свежим взглядом и сказать мне, что мне не хватает.
Основной файл .js
componentDidMount(){
const query = parse(location.search);
if (query.slug !== undefined) {
this.props.IftaStore.getTruck(query.slug);
this.props.IftaStore.load();
} else {
this.props.IftaStore.setLimitByTruck(false);
this.props.IftaStore.load();
}
}
У меня в основном есть URL, чтобы получитьМеня зовут слизняк.Я анализирую, что затем, если он не неопределенный, я вызываю функцию getTruck в моем магазине (см. Ниже).После запуска getTruck должна быть вызвана функция load (также в магазине).Кажется, что происходит, что загрузка выполняется, затем getTruck.
код магазина:
getTruck = async user => {
const thisConst = this;
let endpoint = '/api/equipment/truck/?driver=' + user;
let lookupOptions = {
method: "GET",
headers: {
'Content-Type': 'application/json'
}
};
let data = [];
try {
const response = await fetch(endpoint, lookupOptions);
const data = await response.json();
thisConst.trucknumber = data.results[0]["trucknumber"];
thisConst.limit_by_truck = true;
} catch (e) {
console.log(e);
}
console.log("getTruck trucknumber: ", thisConst.trucknumber);
if (data.count === 0) {
alert("You are not assigned to a truck, please contact your Driver Manager")
}
};
load = async nextEndpoint => {
const thisConst = this;
let data = [];
let endpoint = '/api/dispatch/ifta_stand/';
let lookupOptions = {
method: "GET",
headers: {
'Content-Type': 'application/json'
}
};
console.log("load truck number: ", thisConst.trucknumber);
if (thisConst.limit_by_truck) {
endpoint = '/api/dispatch/ifta_stand/?truck_number=' + thisConst.trucknumber;
} else {
endpoint = '/api/dispatch/ifta_stand/'
}
if (nextEndpoint !== undefined) {
endpoint = nextEndpoint;
}
try {
const response = await fetch(endpoint, lookupOptions);
const data = await response.json();
thisConst.ifta_stand = data.results;
thisConst.next = data.next;
thisConst.previous = data.previous;
thisConst.count = data.count;
} catch(e) {
console.log(e);
}
};
Когда я запускаю это приложение, журналы консоли выглядят так:
iftaStore.js:138 load truck number: 0
iftaStore.js:100 getTruck trucknumber: 24
это должно быть наоборот, номер грузовика getTruck должен регистрироваться перед номером грузовика.
Может кто-нибудь, пожалуйста, посмотрите на мой код и сообщите мне, что мне не хватает ...
Спасибо вам всем оченьмного для вашего времени.