1

在进行返回 Promise 的异步 WinJS 调用时,Promise 的进度回调函数多久被调用一次?考虑以下代码:

WinJS.xhr({ url: "http://localhost:51299/api/values" }).done(

    function complete() {
        console.log("complete: " + new Date().getTime());
    },

    function error() {
    },

    function progress() {
        console.log("progress: " + new Date().getTime());
    }

);

当我运行此代码时,我会看到progress: message 每毫秒多次,总体而言,我可能会看到progress: message 在从 xhr 调用中获取所有数据所需的 1-2 秒内 100-200 次。

  1. 进度函数是否在设定的时间间隔内被调用,如果是,那么该时间间隔是多少?
  2. 让它频繁运行是性能问题吗?
  3. 使用某种计时器功能将其限制为较少运行是更好的做法,还是影响微不足道?
4

1 回答 1

4

进度回调由 Promise 的来源决定——在本例中是 XHR 系统。当他们出来时,你无法控制。在这种情况下,XmlHttpRequest 正在更新进度。没有整体控制,这完全取决于异步操作何时以及是否发生进度更新。

如果您发现性能影响,您应该考虑限制您对进度更新的响应,但通常很难说该怎么做,这取决于您的应用程序。

于 2012-11-29T20:15:30.170 回答