我想用XHR和承诺。我在HTML5 rocks (1)和Mozilla的网站(2)上创建了一个XHR承诺。
它不像预期的那样起作用。如果我有以下顺序来加载和处理一个文件:
sequence = xhrPromise('filename').
.then(parseFile)
.then(processFile)
.then(allSet);如果我只运行1序列,它就会像预期的那样工作。
如果我尝试使用Promise.all()运行N个序列来下载/处理N个文件,它就会中断。
所有下载都以“并行”方式开始,然后一旦第一个XHR请求完成,它将停止其他文件的下载,运行该文件的完整序列,然后继续下载剩余的文件。然后,一旦另一个文件完成,它会阻塞下载,运行该文件的序列,然后继续下载等等。
这似乎是预期的行为,因为XHR进度事件被抛出主任务队列,并且承诺使用微任务队列。
说得通吗?
看起来,如果我使用"fetch“API而不是XHR,它就会像预期的那样工作,但是不能监视下载的进度对我来说是一个障碍。
有什么好办法解决这个问题吗?
(1) http://www.html5rocks.com/en/tutorials/es6/promises/
(2) 对象/承诺
发布于 2015-06-06 17:59:24
它将停止其他文件的下载。
您这是什么意思?IO发生在主线程之外,即使执行javascript,下载也会继续。虽然如果您对结果做了一些繁重的处理,但您可能希望查看网络工作者,以避免阻塞主UI线程。
https://stackoverflow.com/questions/30665682
复制相似问题