对于WinJS承诺,它的“进度”回调函数被调用的频率是多少?

时间:2012-11-29 20:12:38

标签: winjs

当进行返回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());
    }

);

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

  1. 是否在设定的时间间隔内调用了进度函数,如果是,那么该时间间隔是多少?
  2. 让它经常运行这是一个性能问题吗?
  3. 使用某种计时器功能限制它运行频率是否更好,或者影响微不足道?

1 个答案:

答案 0 :(得分:4)

进度回调由承诺的来源决定 - 在本例中是XHR系统。当他们出来时你无法控制。在这种情况下,XmlHttpRequest正在更新进度。没有整体控制,只有在进行更新时才会发生异步操作。

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