function asyncCallDomainWithoutCallback() {
let resultText;
const xhr = new XMLHttpRequest();
const url = 'http://bar.other/resources/public-data/';
xhr.timeout = 30000;
xhr.open('POST', url, true);
xhr.send();
xhr.onload = ()=>{resultText = xhr.responseText};
return resultText;
}
function handler1(){
const serverResponse = asyncCallDomainWithoutCallback();
if(serverResponse) { // serverResponse = undefined
throw new Error('THROW будет упущен')
}
return serverResponse;
}
function asyncCallDomainWitCallback(callbackForAsync) {
const xhr = new XMLHttpRequest();
const url = 'http://bar.other/resources/public-data/';
xhr.timeout = 30000;
xhr.open('POST', url, true);
xhr.send();
xhr.onload = ()=>{ callbackForAsync(xhr.responseText) };
}
function handler2(callbackForAsync){
asyncCallDomainWitCallback(callbackForAsync);
}
function callback (resultText) {
const serverResponse = asyncCallDomain(callback);
if(serverResponse) {
throw new Error('THROW будет упущен') // никто не получит ошибку
}else{
}
return serverResponse; // никто не получит возвращаемое значение
}
Вот код описывающий поведение callback.