В настоящее время мы используем базу данных SAP HANA. Чтобы получить данные, мы будем использовать Node.JS-API, который мы будем называть через AJAX, чтобы получить преимущества async. Итак, вот в чем проблема:Asynchronous Lazy Loading
У нас есть много страниц, где нам нужны одни и те же данные (например, данные клиента). Для этого я хотел создать библиотеку, которая выполняет фактические вызовы данных, так что мне просто нужно позвонить db.getCustomer([ID])
. Чтобы получить возвращаемое значение от AJAX, я должен установить async: false
в вызове AJAX.
Вопрос теперь в том, можно ли асинхронно создавать библиотеку данных? Является ли хорошей практикой инкапсулировать привязку данных (используя так называемый DAO)? Я немного смущен, потому что другой разработчик сказал мне просто использовать один и тот же вызов AJAX снова и снова, чтобы не потерять асинхронный режим, и в любом случае это лучшая практика.
Вот мой фактический AJAX-вызов в качестве примера:
getCustomer: function(CID) {
var aUrl = 'http://example.com/api/customer/' + CID,
returnData
;
jQuery.ajax({
url: aUrl,
method: 'GET',
dataType: 'json',
contentType: "application/json",
async: false,
success: function(data) {
returnData = data;
}
});
return returnData;
},
// other ajax calls
// to get the data via 1-liner
спасибо за разъяснение!
поэтому решение здесь может быть создание самой модели в моей функции библиотеки (или, как вы упомянули, используя обещания) ? – corax228
Если ваша цель - создать библиотеку функций, я бы решил, чтобы ваши методы вернули обещание (разрешить или отклонить) – Qualiture
спасибо! после некоторого исследования он работает просто супер отлично :) return $ .ajax ({...}); а затем -> getCustomer (CID) .then() или .success() решает теперь все мои проблемы! – corax228