簡體   English   中英

JavaScript-兌現承諾還為時過早?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM