为什么 ember ui 在长承诺调用期间挂起

Why does ember ui hang during long promise call

我有一个很长的 运行 调用,它被一个承诺封装,

根据我对 promises 的理解,它允许我们执行异步任务,这些任务将在它们 return 时处理,并且直到它们 return 函数应该继续。

在我的示例中,

  1. 动作进入

  2. 更新一个改变 ui

  3. 的变量
  4. 执行 somethingLongRSVP

然后它应该退出该函数并更新 ui,但是在更新 ui.

之前它会等待 promise 解决

http://emberjs.jsbin.com/kepuki/5/edit?js,output

循环中的console.log消息会挂起你的UI。例如,如果您用 setTimeout 替换控制台日志循环,您将看到它在解决承诺之前更新按钮。

如果你想模拟一个长解析的承诺,你一定要使用 setTimeout。否则,时间将花费在执行循环(在 doSomethingLongRSVP 内)然后执行下一条语句(将变量设置为 clicked)上。如果你要使用 setTimeout,它会延迟 promise 解析的时间,从而导致长网络请求的影响。