Skip to content

Commit 99bd9b9

Browse files
committed
Merge pull request webpack#1170 from gaearon/patch-1
Make hotDownloadManifest return a promise
2 parents 16e3fc0 + a6082c9 commit 99bd9b9

1 file changed

Lines changed: 35 additions & 33 deletions

File tree

lib/JsonpMainTemplate.runtime.js

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,41 @@ module.exports = function() {
1818
head.appendChild(script);
1919
}
2020

21-
function hotDownloadManifest(callback) { // eslint-disable-line no-unused-vars
22-
if(typeof XMLHttpRequest === "undefined")
23-
return callback(new Error("No browser support"));
24-
try {
25-
var request = new XMLHttpRequest();
26-
var requestPath = $require$.p + $hotMainFilename$;
27-
request.open("GET", requestPath, true);
28-
request.timeout = 10000;
29-
request.send(null);
30-
} catch(err) {
31-
return callback(err);
32-
}
33-
request.onreadystatechange = function() {
34-
if(request.readyState !== 4) return;
35-
if(request.status === 0) {
36-
// timeout
37-
callback(new Error("Manifest request to " + requestPath + " timed out."));
38-
} else if(request.status === 404) {
39-
// no update available
40-
callback();
41-
} else if(request.status !== 200 && request.status !== 304) {
42-
// other failure
43-
callback(new Error("Manifest request to " + requestPath + " failed."));
44-
} else {
45-
// success
46-
try {
47-
var update = JSON.parse(request.responseText);
48-
} catch(e) {
49-
callback(e);
50-
return;
51-
}
52-
callback(null, update);
21+
function hotDownloadManifest() { // eslint-disable-line no-unused-vars
22+
return new Promise(function(resolve, reject) {
23+
if(typeof XMLHttpRequest === "undefined")
24+
return reject(new Error("No browser support"));
25+
try {
26+
var request = new XMLHttpRequest();
27+
var requestPath = $require$.p + $hotMainFilename$;
28+
request.open("GET", requestPath, true);
29+
request.timeout = 10000;
30+
request.send(null);
31+
} catch(err) {
32+
return reject(err);
5333
}
54-
};
34+
request.onreadystatechange = function() {
35+
if(request.readyState !== 4) return;
36+
if(request.status === 0) {
37+
// timeout
38+
reject(new Error("Manifest request to " + requestPath + " timed out."));
39+
} else if(request.status === 404) {
40+
// no update available
41+
resolve();
42+
} else if(request.status !== 200 && request.status !== 304) {
43+
// other failure
44+
reject(new Error("Manifest request to " + requestPath + " failed."));
45+
} else {
46+
// success
47+
try {
48+
var update = JSON.parse(request.responseText);
49+
} catch(e) {
50+
reject(e);
51+
return;
52+
}
53+
resolve(update);
54+
}
55+
};
56+
});
5557
}
5658
};

0 commit comments

Comments
 (0)