我這里有一個使用 React.js 的代碼,這段代碼在控制臺中回傳 undefined ..
getTicket = async() =>{
var ticketData;
this.state.client.get('ticket').then(
await function(data){
ticketData = data['ticket'].toString();
console.log(data['ticket'])
}
)
await this.setState({ ticketInformation: ticketData })
}
雖然這是 javascript,但這段代碼回傳的是 ticketData 的值。
var ticketData;
client.get('ticket').then(
function(data) {
ticketData = data['ticket'];
console.log("TICKET:: " JSON.stringify(ticketData.id));
}
);
我的問題是,這兩個有什么區別?在第一個代碼中,如您所見,我使用的是 async/await,據我所知,它不應回傳 undefined .. 不知何故,第二個代碼沒有 async/await 但完全為全域變數提供了一個值。
uj5u.com熱心網友回復:
嘗試如下,我希望你有一個目標。
await this.state.client.get('ticket').then(
function(data){
ticketData = data['ticket'].toString();
console.log(data['ticket'])
}
)
uj5u.com熱心網友回復:
我猜這是因為當您第一次呼叫 getTicket 函式時, this.state.client 是未定義的。你應該先給它一個默認值,但據我所知,給“狀態”賦予功能是不好的。您應該將轉換值函式作為外部回呼,而不是在“狀態”中,因為每當狀態值發生變化并且浪費記憶體時,React 都會再次重新制作該函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/389773.html
標籤:javascript 反应 异步 异步等待
上一篇:Python“條件”異步方法
