Как управлять кешем ampify.request: постоянная опция

При использовании http://amplifyjs.com/api/request/ я хотел бы использовать ampify.store для сохранения результатов каждого вызова. Я знаю, что могу сделать это с помощью этого кода:

amplify.request.define( "ajaxExample2", "ajax", {
  url: "/myApiUrl",
  dataType: "json",
  type: "GET",
  cache: "persist"
});

Тем не менее, я хотел бы иметь возможность добавлять результаты этого в другую переменную, хранящуюся в ampify.store, но только если данные поступают с сервера, а не из кэша.

Например, я сделаю начальный звонок amplify.request("ajaxExample2"...тогда я сохраню результаты в другую переменную через amplify.store, Затем в следующий раз я позвоню amplify.request("ajaxExample2"...Если данные поступают с сервера, я хочу перезаписать свою локальную переменную - если нет, я хочу оставить ее в покое.

Итак, я хотел бы узнать, выполняет ли запрос вызов сервера или нет, и вызвать функцию, если это так. Есть ли способ сделать это с помощью усиления?

1 ответ

Решение

@swatkins перед вызовом службы вы можете проверить, есть ли в хранилище данные или нет, если данные доступны в хранилище (Cache), тогда нет необходимости вызывать службу, в противном случае вызовите службу.

Например:

    var cachedData = amplify.store("anyKey");
    if (typeof cachedData === 'undefined' || cachedData.length == 0) {

        amplify.request.define("ajaxExample2", "ajax", {
            url: "/myApiUrl",
            dataType: "json",
            type: "GET",
            cache: "persist"
        });

amplify.request("ajaxExample2", 
                 function( data ) {     
                   cachedData = data.d;
                   amplify.store("anyKey", data)
                });
 }
Другие вопросы по тегам