javascript - 如果 angularJs 中的请求超过 30 秒,如何显示警报?
问题描述
有时请求需要很长时间,我想在发生这种情况时显示一些警报或 toastr。知道如何捕捉请求时间吗?提前致谢
解决方案
你可以使用 promise $q
,因为 promise 只能解决一次,并且在被拒绝后无法解决。在此示例中,使用输入指定在请求完成之前的等待时间(以秒为单位)。如果此时请求尚未完成,则会在 5 秒后显示警报。
angular.module("app", [])
.controller("ctrl", function($scope, $timeout, $q) {
$scope.wait = 0;
$scope.request = function() {
const timer = $q.defer();
timer
.promise
.then(function(value) {
alert(value);
})
// do nothing
.catch(() => {});
$timeout(function() {
timer.resolve("Request takes too long");
}, 5000);
$timeout(function() {
// Here your request resolves successfully
console.log("Resolving request");
timer.reject();
}, $scope.wait * 1000);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.js"></script>
<div ng-app="app" ng-controller="ctrl">
<input type="number" ng-model="wait">
<button ng-click="request()">Click</button>
</div>
推荐阅读
- ios - 使用 Swift 从新的视图控制器恢复到以前的视图控制器后,带有 UIActivityIndicatorView 的 UIAlertController 不会关闭
- c# - HttpClientHandler 不包含 DefaultProxyCredentials 的定义
- c# - 如何使用 Redemption 构建和部署 Windows x64 应用程序?
- azure - 通过 powershell 以编程方式使用 MFA 对 AAD 进行身份验证
- sql - 自动填充表单 apex-oracle
- javascript - Angular 8:运行“ng build --prod”时core.ts中的错误
- r - 如何通过一系列值循环操作,其中一个值为 0
- ios - updateTransaction 中不包含已兑换的促销代码
- unity3d - 即使使用新版本 v2.0.0,air tap 也无法在 hololens 1 上工作
- reactjs - Dynamic react-bootstrap carousel breaking apart. (A valid React element (or null) must be returned.)