[英]JavaScript - Promise fulfilled too early?
我使用VueJs創建了一個小型示例應用程序,並創建了C#REST API在SQL Server后端中存儲和檢索數據。
為了進行測試,我創建了一個帶有表單的簡單網頁,用於創建“便箋”。 該注釋由以下函數“ saveData()”存儲:
saveData()
{
let promiseStack = [];
var jsondata = JSON.stringify(this.note);
promiseStack.push(this.$http.post('REST_API/note', jsondata));
Promise.all(promiseStack).then(data =>
{
this.$http.get('REST_API/note');
this.$router.push({ name: 'viewnotes', params: { id: data[0].body.id }})
}, error =>
{
console.log(error);
});
}
我嘗試使用Promise等待后端的“存儲”操作完成,並在實現Promise后發出GET請求以檢索所有便箋。
但是,promise中的get請求不會返回任何數據。 如果稍后再手動發出get請求,則會檢索以前存儲的數據。
因此,我研究了C#REST API。 當前有兩個函數:createNote(...),getAllNotes(...)。 在調用這些函數時,我使用了StreamWriter來記錄文件系統的時間,精確到毫秒。 我看到的是,在“ getAllNotes”之后調用了“ createNote”。 因此,我懷疑該API是否可以正常工作,但是使用諾言的方式似乎完全錯誤。
也許有人暗示?
更新
我知道,使用Chromium中的開發人員工具欄,GET請求不會返回任何數據。 響應為空
網絡標簽中的開發者工具欄顯示,請求以正確的順序提交,因此“ POST”請求首先發出
看來我找到了問題。 我的“保存”鏈接中有一個“ href”標簽,該標簽觸發了早期路由。 預期的“ POST”和“ GET”已正確觸發,但是由於鏈接中的“ href”標記,即使它們為空,之間也存在另一個“ GET”。
我刪除了標簽,現在可以正常使用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.