Не вызывается async функция

99
07 октября 2021, 07:50

JS(React native) только изучаю после JAVA, не пойму понять в чем фишка и почему не вызывается функция async внутри функции? Где моя ошибка?

    callAfterFetch(body): function{
    let responceJson = JSON.parse(body);
    console.log("BODY=" + responceJson.error);
    if (responceJson.error === '0'){
        this.setState({
            token: responceJson.userKey,
            address: responceJson.address,
        })
        this.writeTokenToLocalStorage()
    //  this.writeTokenToLocalStorage(body.userKey, body.address);
    }
}

writeTokenToLocalStorage(): function {
    console.log("BODY2=" + this.state.token)
/* надо вызвать*/   
async () => {
            console.log("BODY22=" + this.state.token);
            try {
                await AsyncStorage.setItem(MyConstants.TOKEN, this.state.token)
                await AsyncStorage.setItem(MyConstants.ADDRESS, this.state.address)
                console.log("DONEWRITE=" + this.state.token + "|" + this.state.address)
            } catch (error) {
                console.log("error_writeTokenToLocalStorage=" + error)
            }
        }
}

Судя по логам, выполнения прерывается после

   console.log("BODY2=" + this.state.token)
Answer 1

Что бы вызвать функцию, ее надо... вызвать!

Попробуйте IIFE

writeTokenToLocalStorage(): function {
  console.log("BODY2=" + this.state.token)
  /* надо вызвать*/
  (async() => {
    console.log("BODY22=" + this.state.token);
    try {
      await AsyncStorage.setItem(MyConstants.TOKEN, this.state.token)
      await AsyncStorage.setItem(MyConstants.ADDRESS, this.state.address)
      console.log("DONEWRITE=" + this.state.token + "|" + this.state.address)
    } catch (error) {
      console.log("error_writeTokenToLocalStorage=" + error)
    }
  })();
}
READ ALSO
Правильно ли использовать setTimeoiut в качестве установки последовательности?

Правильно ли использовать setTimeoiut в качестве установки последовательности?

Можно ли использовать setTimeout в качестве установки последовательности? Или может есть лучшие варианты как это сделать? Для примера вот небольшая...

68
Вызов WebAssembly из JavaScript

Вызов WebAssembly из JavaScript

У меня есть программа C++ на 1000+ строкПрограмма состоит из одной функции, которая принимает на вход пять unsigned int (или 1 unsigned char и 4 unsigned int), возвращая...

93
Возможно ли использовать конструктор new ResizeSensor более чем с одним элементом?

Возможно ли использовать конструктор new ResizeSensor более чем с одним элементом?

Есть два блока, необходимо их сравнивать и в зависимости от ширины и высоты совершать определенные манипуляции

291
фича у плагина emmet. Как сделать нумерацию

фича у плагина emmet. Как сделать нумерацию

В плагине emmet есть такая тема с множественными курсорамиНо как проделать с ними нумерацию строк под типа id="t20", id="t21", id="t22" и т

79