如何拦截电话

时间:2014-01-30 16:59:08

标签: javascript azure-mobile-services

我需要使用进度条或加载程序指示器,并在我尝试查询Azure时启动它。 这是可能的,如何做到这一点。现在的查询示例,如您所见,我正在做手工制作:

var client = new WindowsAzure.MobileServiceClient('site', 'key');
var dataTable = client.getTable('table');
function GetAzureData(){
progress.start();
dataTable.take(12).where({condition:condition}).read().done(
                    function (d) {
//fill data
                       progress.completed();
                    }, function (err) {
                        progress.completed();
                    });
}

但是因为我有很多这样的方法,所以当我调用“where”或“read”ect并显示进度(loader)时,我需要拦截它。

1 个答案:

答案 0 :(得分:1)

您可以将过滤器用于客户端对象,并将其应用于从客户端发出的所有请求。不幸的是,关于此功能的文档并不多,但您可以在this docdocumentation for the MobileServiceClient.withFilter function上看到一些文档。

对于您的场景,实现与此类似:

var client = new WindowsAzure.MobileServiceClient('site', 'key');
var clientWhichTracksProgress = client.withFilter(function(request, next, callback) {
    progress.start();
    next(request, function(error, response) {
        progress.completed();
        callback(error, response);
    });
});
var dataTable = clientWhichTracksProgress.getTable('table');

其余代码将是相同的(没有调用进度跟踪器)。

更新:我写了一篇博文,详细介绍了http://blogs.msdn.com/b/carlosfigueira/archive/2014/02/24/using-service-filters-with-the-mobile-services-javascript-sdk.aspx上JavaScript的服务过滤器。