Итак, у меня есть пара методов, которые должны вернуть обещание.Эти методы похожи на обещанный XHR, поэтому я пытался извлечь часть общего обещания XHR, но не могу.
Я попробовал пару вещей.Например:
function sendXHR(reqMethod, reqUrl, successFn, errorFn) {
return new Promise((resolve, reject) => {
let xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = () => {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
try {
resolve(successFn(xmlhttp));
}
catch(ex){
reject(errorFn(ex));
}
}
}
xmlhttp.open(reqMthod, reqUrl, true);
xmlhttp.send();
});
function returnXHRPromise(url) {
return new Promise((resolve, reject) => {
sendXHR('GET', url, function (xmlhttp) { ... some code ...
resolve(...) }, function (ex) { ... some code ...
reject(...) }
})
}
Пробовал также
function returnXHRPromise(url) {
sendXHR('GET', url, function (xmlhttp) { ... some code ...
resolve(...) }, function (ex) { ... some code ...
reject(...) }
}
Раньше это было что-то вроде -
function returnXHRPromise(url) {
return new Promise((resolve, reject) => {
let xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = () => {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
try {
... some code ... ; resolve(...)
}
catch(ex){
...some code ... ; reject(...);
}
}
}
xmlhttp.open('GET', url, true);
xmlhttp.send();
}
})
}
Нужно отделить обещанную часть XHRи основная работа функции.