2017-10-17 74 views
0

我有一個向服務器發送數據的異步提交功能。現在我想每當提交用戶停留此頁面,但狀態恢復到初始形式。 這裏是我的代碼:在等待反應之後初始化狀態

save = async() => { 
.... 
await rest.post('some_where', {data}) 
// here 
// this.setState({cart: [], selectedItems: []}); 
} 

我想正好發送請求休息狀態後,重新初始化;不是在此之前。 我該怎麼做?

回答

0

您是否嘗試過使用then() Promise方法?

then()方法返回一個Promise。它最多需要兩個參數:Promise的成功和失敗情況的回調函數。

這意味着你可以這樣做:

save = async() => { 
    .... 
    await rest.post('some_where', {data}).then(() => { 
    this.setState({cart: [], selectedItems: []}); 
    }); 
} 

如果出現南,你的承諾失敗,你可以做的另一套邏輯。或許,這顯示在你的UI:

save = async() => { 
    .... 
    await rest.post('some_where', {data}).then(() => { 
    this.setState({cart: [], selectedItems: []}); 
    },() => { 
    console.error("Post failed!"); 
    this.setState({didFail: true}); 
    }); 
} 
0

後調用返回一個承諾,你需要添加一個解析器回調,然後你可以調用的setState({})方法。在你的情況下,setState方法將不會從服務器更新數據。