правильный вывод asyn c ждут обещания? - PullRequest
1 голос
/ 24 февраля 2020

Я использую первый магазин и получаю информацию из первого.

Здесь я хочу получить данные из первого магазина и распечатать их, но существует проблема с асинхронным режимом.

Вывод выводится после неопределенного.

Я хочу знать, как правильно его распечатать.

Когда данные получены, функция получает данные, а метод получения данных после поиск в пожарном депо.

в компоненте реакции

  index = (date) =>{

        let date_total = UserAction.getIndex(date)

       return date_total
    }

render(){
 const {user_list} = this.props;
        console.log(this.state)
        const date = "2020-02-24"
        console.log("data",date)
        let index = this.index(date) < this
        console.log("index", index)

return(...)

и функция использования


export function getIndex(data){
    let time_now = moment(data).utc().format()
    const user_history_start = moment(time_now).startOf("d").utc().format();
    const user_history_end = moment(time_now).endOf("d").utc().format();
    let db = loadFB().firestore();
    let query = db.collection('users').where('create_date','>=',user_history_start).where('create_date','<=',user_history_end);
    let number ;
    return query.get().then( docs=>{

        number = docs.size
        return number
    })



 }

я хочу вывести

data 2020-02-24
index 11 < (firestore given data)

но вывести

data 2020-02-24
index promise{<pending>} < (firestore given data)

Дайте мне хорошее решение.

1 Ответ

2 голосов
/ 24 февраля 2020

Я полагаю, вы не можете напечатать обещанное значение при рендеринге, установить состояние и напечатать его вместо этого?

constructor() {
  super();

  this.state = {
    index: null
  }
}

getIndex = (date) => {
  // --------- update ----------
  UserAction.getIndex(date).then(date_total => this.setState({ index: date_total }))
}

componentDidMount() {
  const date = "2020-02-24"
  // --------- update ----------
  this.getIndex(date)
}

render() {
  console.log("index", this.state.index)
  // will first print null, 
  // then print the index when the promise is done (re-rendered due to state change)
}

Возможно, вы захотите прочитать это в качестве ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...