1

服务器调用的顺序或延迟如何带来不同的行为。代码应该更清楚地解释这一点。

let editProfile = function (e) {
  e.preventDefault();

  let info = {};
  info.username = $(".editProfile #usernameInput").val();
  info.email = $(".editProfile #emailInput").val();

  let picture = $(".editProfile #imageInput")[0].files[0]; 
  if (picture) {                               <-|
    Images.insert(picture);                      |Problem
  }                                              |
  Meteor.call("editProfile", this, info);      <-|
};

这很好,但是当我尝试更改这些调用的顺序时,我在控制台中收到错误。

  Meteor.call("editProfile", this, info);      <-|
  if (picture) {                                 |Error is given
    Images.insert(picture);                      |
  }                                            <-|

浏览器错误:

加载资源失败:服务器响应状态为 404(未找到)

错误:“队列”失败 [404] 未找到 [404] [未定义],错误:cfs_upload-http.js:351 处 cfs_upload-http.js:77 处失败 [404] 未找到 [404] [未定义] 下划线.js:750 在 XMLHttpRequest.xhr.onreadystatechange (cfs_upload-http.js:200)

如果我尝试做这样的事情:(没有给出错误)

Meteor.call("editProfile", this, info);
setTimeout(function () {
  if (picture) {
    Images.insert(picture);
  }
},2000);

我真的很想知道为什么这种行为会受到超时/序列的影响。

4

0 回答 0