我使用VueJs創建了一個小示例應用程序,並創建了一個C#REST API來存儲和檢索SQL Server後端中的數據。JavaScript - Promise實現得太早?
爲了測試,我創建了一個帶有表單的簡單網頁來創建一個「註釋」。
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);
});
}
我試圖用一個承諾要等到在後臺的「存儲」操作完成,併發出GET請求來檢索所有:該說明是由下面的函數,「SAVEDATA()」存儲一旦諾言得到滿足,就會注意到。
但是,承諾內的獲取請求不返回任何數據。如果稍後手動發出獲取請求,我將檢索之前存儲的數據。
所以我看了一下C#REST API。目前有兩個函數:createNote(...),getAllNotes(...)。我使用StreamWriter在使用毫秒級精度調用這些函數時登錄到文件系統。我看到的是'createNote'在'getAllNotes'之後被調用。所以我懷疑這個API工作正常,但是我使用承諾的方式似乎是錯誤的。
也許有人有提示?
UPDATE
我知道GET請求不使用在Chromium開發者工具欄返回任何數據。響應是空
在網絡選項卡中的開發者工具欄顯示,該請求被以正確的順序提交,因此,「POST」請求發出第一
你怎麼知道GET請求沒有返回任何數據? – deceze
你的瀏覽器的網絡檢查員說什麼請求被觸發的順序是什麼? – deceze
如果網絡選項卡按正確的順序顯示請求,但系統調用發生亂序,則API聽起來像是損壞的部分。 – ssube