#javascript #reactjs #react-native
#javascript #reactjs #react-native
Вопрос:
У меня есть вопрос, потому что я не понимаю, почему мои функции не дают мне правильных результатов.
У меня есть основная функция stopClick()
, в которой я запускаю две другие функции, они похожи, но я передаю два разных массива и создаю два разных массива :
this.timestampCheckDestro(this.props.arrayTimestampDestro)
дай мне tempoRealeDestro
this.timestampCheckDestro(this.props.arrayTimestampDestro)
дай мне tempoRealeSinistro
Из полученных результатов я заметил, что функция, которая запускается первой, способна заполнить массив до определенной точки, а затем заполнить его значениями NaN. Напротив, второй массив либо состоит только из NaN, либо начальные позиции равны NaN, а конечные заполнены значениями.
Мой код таков:
async stopClick(){
//Code...
await this.timestampCheckDestro(this.props.arrayTimestampDestro);
await this.timestampCheckSinistro(this.props.arrayTimestampSinistro);
//Actions to another function. (after I have the array populated from the two functions)
}
async timestampCheckDestro( timestampDestro ){
//declare variable
for( let i = 0; i < timestampDestro.length; i ){
diffDestro = (( baseDestro timestampDestro[i] ) - this.contatoreDestro )
this.tempoRealeDestro.push(diffDestro)
}
}
async timestampCheckSinistro( timestampSinistro ){
//declare variable
for( let i = 0; i < timestampSinistro.length; i ){
diffSinistro = (( baseSinistro timestampSinistro[i] ) - this.contatoreSinistro )
this.tempoRealeSinistro.push(diffSinistro)
}
}
Теперь мой вопрос:
Я не знаю, правильно ли я использовал async / await или бесполезен в задаче такого типа, в любом случае я хотел бы понять, как выполнить две функции и только когда они завершат все операции, продолжить выполнение функции.
Спасибо
Редактировать:
constructor(props){
super(props);
this.state = {
loading: true
};
//....
this.tempoRealeDestro = [];
this.tempoRealeSinistro = [];
}
dataReceived(){
this.dimensioneArrayRaggiunta = this.props.dimensioneArrayRaggiunta;
if(this.checkContatore == false){
this.contatoreDestro = this.props.contatoreTimestampDestro;
this.contatoreSinistro = this.props.contatoreTimestampSinistro;
this.checkContatore = true;
}
this.stopClick();
}
Комментарии:
1. вы в основном использовали async / await там, где это не нужно — ничего асинхронного и вообще никаких обещаний — ваша проблема заключается в неправильном обращении с daya в this.props.arrayTimestamp * и любыми другими свойствами (this.contatero *)
2.
async/await
просто для упрощения обработки обещаний. Ваш код не асинхронный, он линейный. Так что вasync/await
вообще нет необходимости.3. Хорошо, на самом деле я получаю те же результаты, что и когда я их не использовал. Но как вы думаете, что я мог бы сделать для достижения этого?
4. Почему бы вам не поставить консоль. войдите в циклы for и выясните, что такое значение NaN? Я думаю, что arrayTimestampDestro или arrayTimestampSinistro содержат в нем значения NaN.
5. @NhutDinhBa Привет и спасибо за ваш ответ, arrayTimestampDestro и arrayTimestampSinistro заполнены правильно. Что я заметил, так это то, что: например, arrayTimestampDestro и arrayTimestampSinistro имеют длину 30, поэтому tempoRealeDestro для первых 15 имеют значение, остальные 15 равны NaN, в то время как для tempoRealeSinistro первые 15 равны NaN, последние 15 имеют значение