2
進度處理程序已被棄用,在幾個領先的承諾庫(Q,When,藍鳥),並且也已經在新Promises/A+ spec下降。雖然我理解其背後廢除進度事件的原因,我無法再保理,我已經變得相當用於以下模式:承諾:重構進展時進度更新的數量是未知
var download = function(url) {
var deferred = Q.defer();
...
http.get(url, function(res) {
res.on('data', function(chunk) {
data += chunk.toString();
deferred.notify('Downloading: ' + (data.length/totalLength) + '%');
/* ^Notify download progress, but progress events are now deprecated :(*/
});
res.on('end', function() {
deferred.resolve('Success: ' + url);
});
res.on('error', function(err) {
deferred.reject(err);
});
});
return deferred.promise;
}
...
download(url).then(console.log, console.log, console.log);
/* ^The third handler keeps logging progress, but this is now deprecated :(*/
我見過的代碼重用因素例子彈出網絡上的任何地方,但在所有這些例子中,進度更新的數量似乎事先已知。在上述模式中,可能發佈的進度更新數量不確定。
有沒有人可以幫助我實現上述模式而不使用進度事件/處理程序?
太棒了!謝謝。是的,我想重新考慮的原因之一是,我不必再使用*延期*。 – 2014-11-25 12:32:42