我有一些有角度的工厂,用于对传统的ASP.NET .asmx Web服务进行Ajax调用,如下所示:
module.factory('productService',["$http",function ($http) { return { getSpecialProducts: function (data) { return $http.post('/ajax/Products.asmx/GetSpecialProducs',data); } } } ]);
我在本地网络测试,所以响应时间是“太”好。有一个聪明的方式延迟$ http几秒钟从呼叫模拟一个坏的连接?
$timeout(function() { productService.getSpecialProducs(data).success(success).error(error); },$scope.MOCK_ajaxDelay);@H_404_9@
@H_404_9@
有趣的问题!
正如你自己提到的,$ timeout是延迟调用的最合理的选择。而不是在每个地方都有$ timeout调用,你可以推送一个响应拦截器将$ http promise包装在一个$ timeout promise中,就像在documentation of $http
中概念概述的那样,然后在一个配置块中注册它。这意味着所有$ http调用都受到$ timeout延迟的影响。类似的东西:
$httpProvider.interceptors.push(function($timeout) { return { "response": function (response) { return $timeout(function() { return response; },2500); } }; });
作为你的“模拟一个坏的连接?”的奖励,你可以拒绝或绝对没有任何随机。嘿嘿。
@H_404_9@ 原文链接:https://www.f2er.com/angularjs/145538.html