Я новичок во всем наборе принципов отсрочки/обещания, но после прочтения всего этого я могу найти, как использовать их для возврата данных ajax, а не объекта javascript. Это возможно? Цель состоит в том, чтобы сделать следующий код работы:Могу ли я сделать обещание вернуть населенный объект в jQuery?
var Binary = function(data){
this.data = data;
}
var File = function(url){
this.data = null;
this.url = url;
this.getData = function(){
// return either cached version at this.data or fetch it
}
}
// the goal is to make the following possible:
var url = "http://www.google.com/humans.txt";
var file = new File(url);
file.getData().done(function(binary){ //binary should be equals to `new Binary(data)`
alert("we got binary data object with the data being: " + binary.data);
});
Если операция иногда асинхронной и иногда синхронными, то вы можете вернуть уже разрешенное обещание для синхронного пути, а затем вызывающего абонента может просто обрабатывать результат, как если бы он был асинхронным, было ли это или нет. Если результат всегда получается синхронно, то нет смысла использовать обещания. – jfriend00
Какой вкус обещаний вам нужен? [ 'JQuery.deferred'] (http://api.jquery.com/jQuery.Deferred/)? [ES6 Promises] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)? Обещания/A +? –
@ FabrícioMatté jQuery.deferred – chacham15