JavaScript - 承诺过早实现了吗?

时间:2017-10-16 12:26:56

标签: javascript promise vuejs2

我使用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来等待后端中的'store'操作完成,并在完成promise后发出GET请求以检索所有注释。

但是,promise中的get请求不会返回任何数据。如果我稍后手动发出get请求,我将检索先前存储的数据。

所以我查看了C#REST API。目前有两个函数:createNote(...),getAllNotes(...)。当使用毫秒精度调用这些函数时,我使用StreamWriter来记录文件系统。我看到的是'createNote'是在'getAllNotes'之后调用的。所以我怀疑API工作正常,但是我使用promises的方式似乎非常错误。

也许有人有提示?

更新

  • 我知道GET请求不会使用Chromium中的开发人员工具栏返回任何数据。回复是空的

  • 网络标签中的开发人员工具栏显示请求以正确的顺序提交,因此首先发出“POST”请求

1 个答案:

答案 0 :(得分:0)

我似乎发现了这个问题。我的“保存”链接中有一个“href”标记,触发了早期路由。预期的'POST'和'GET'被正确触发,但由于链接中的'href'标记,在某处之间还有另一个'GET',即使它是空的。

我删除了标记,现在它按预期工作。