0

使用amplify.request时,我想使用amplify.store来保存每次调用的结果。我知道我可以用这段代码做到这一点:

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

但是,我希望能够将此结果添加到使用 amplify.store 存储的另一个变量中,但前提是数据来自服务器而不是来自缓存。

例如,我将对 进行初始调用amplify.request("ajaxExample2"...,然后通过 将结果保存到另一个变量amplify.store。然后,下次我调用 时amplify.request("ajaxExample2"...,如果数据来自服务器,我想覆盖我的局部变量 - 如果不是,我想不理会它。

所以,我想要一种方法来知道请求是否进行了服务器调用,如果是,则调用一个函数。有没有办法通过放大来做到这一点?

4

1 回答 1

0

@swatkins 在调用服务之前,您可以检查存储是否有数据,如果数据在存储(缓存)中可用,则无需调用服务,否则调用服务。

例如:

    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)
                });
 }
于 2012-06-19T06:25:05.717 回答