Ich habe eine Methode, die an mehreren Stellen im Projekt aufgerufen wird. Ich habe Methode gemacht. der erste Methodenaufruf führt Ajax get aus, speichert Daten in der Klasseneigenschaft und feuert den Rückruf ab. Die zweite Aufrufmethode ruft nur Callback mit zwischengespeicherten Daten auf. Ich möchte die Fähigkeit hinzufügen, Daten synchron zu laden. Das Datum sollte von der Methode zurückgegeben werden. Ich habe einen zusätzlichen Parameter hinzugefügt, um {async: false} aufzurufen, aber ich frage mich, ob es eine bessere Lösung mit ES7-Versprechen gibt?Daten mit Callback laden. Gibt es eine bessere Lösung mit ES6 Promises?
Dies ist meine Rückruf-Lösungen.
export class loadData {
constructor() {
this.data = [];
}
getData({callback, async = true}){
let syncData = this.data;
if(this.data.length === 0){
$.ajax({
beforeSend: authorizationManager.addAuthorizeHeader(),
url: apiUrl + '/Data/datadata',
dataType: 'json',
cache: true,
async: async
}).done((data)=>{
if(async) callback(data);
this.data = data;
syncData = data;
});
} else {
if(async) callback(this.data);
}
if(async === false) return syncData;
}
}
loadDataTest = new loadData();
Anruf async
loadDataTest.getData({
callback: (data) =>{
console.log(data);
}
});
Anruf sync
let a = loadDataTest.getData({
async: false
});
Wenn die Funktion asynchron ist, können Sie sie nicht synchron machen. Versprechen sind keine Möglichkeit, eine asynchrone Funktion, eine Synchronisierung, zu machen. – thefourtheye