我使用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