Я начинаю рефакторить некоторый код, чтобы использовать промисы и кэширование, чтобы обеспечить более чистый код. Мой код (см. ниже) попытался использовать эту новую предпосылку и работает с небольшим успехом. Основная проблема заключается в том, что механизм кэширования, который используется по умолчанию, не позволяет мне «передавать» значение динамического URL-адреса, не возвращая каждый раз одни и те же кэшированные результаты. Как я могу обновить приведенный ниже код, чтобы использовать ключ кеша?
"use strict";
var FLEX = window.FLEX|| {};
FLEX.Following = FLEX.Following|| {};
FLEX.Following.Process = function () {
var deferred = $.Deferred(),
execute = function (followUrl) {
$.ajax(
{
url: _spPageContextInfo.webAbsoluteUrl +
followUrl,
method: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function (data) {
deferred.resolve(data);
},
error: function (err) {
deferred.reject(err);
}
}
);
return deferred;
};
return {
execute: execute
}
}();
FLEX.Following.Init = function (divName, followUrl) {
FLEX.Following.Process.execute(followUrl).promise().then(
//success
function (data) {
var html = "";
$.each(data.d.Followed.results,function(index, value){
html += value.Name + "<br />";
});
$(divName).html(html);
},
//failure
function(err) {
$(divName).html('Failed');
}
);
}
Затем я вызываю код, используя следующие строки:
$(document).ready(function() {
FLEX.Following.Init("#followed-sites", "/_api/social.following/my/followed(types=4)");
FLEX.Following.Init("#followed-people", "/_api/social.following/my/followed(types=1)");
FLEX.Following.Init("#followed-documents", "/_api/social.following/my/followed(types=2)");
});
Результирующий вывод «работает», однако я получаю одинаковые результаты в каждом div, поскольку кажется, что каждый последующий вызов jQuery получает кэшированную версию из одного из них, и поэтому каждый набор результатов идентичен. Как я могу гарантировать, что я могу использовать одни и те же функции с разными динамическими URL-адресами, как указано выше, и кэшировать их отдельно.
Спасибо