为$ state.go函数设置超时

时间:2016-05-18 16:52:47

标签: javascript angularjs angular-ui-router timeout

我正在尝试在服务上调用函数时添加超时。该函数运行一个将任务添加到队列的进程。

在这个过程中,一切都运行良好,甚至是$ state.go函数,但是我很快就会看到路由引用的观点。我无法看到正在运行的进程的结果,因为我在进程开始执行之前已进入视图。

我在考虑添加超时但是没有工作(或者我不知道我做错了)

function CreateMigrationCtrl(MigrationService, $state, $timeout) {

...

$timeout($state.go('app.migration'), 3000);
}

这是正确的使用方式吗?

我可以使用超时来延迟执行$ state.go吗?

2 个答案:

答案 0 :(得分:3)

在您的代码中,$ state.go立即被调用,您将结果传递给超时,换句话说,您的代码看起来像

var result = $state.go('app.migration');
$timeout(result, 3000);

相反,你必须传递对应该在指定时间后调用的函数的引用

$timeout(function() {
    $state.go('app.migration');
}, 3000);

$timeout($state.go.bind(null, 'app.migration'), 3000);

答案 1 :(得分:0)

您应该向$timeout提供$timeout(function() { $state.go('app.migration'); }, 3000);

id