超时后返回值

时间:2017-07-06 08:04:00

标签: javascript angularjs

如何在此函数中超时后返回值

$get: function($timeout) {
        var breadcrumbs;
        data = [];

        $timeout(function() {
          data = crateBreadcrumbs();
          console.log(data);
        });
        return data;

1 个答案:

答案 0 :(得分:2)

你需要回复一个承诺。承诺将表示您尚未返回数据,但是一旦您的$ timeout服务完成,您将解决该承诺。

您可以使用$q服务来实现此目的。 docs

基本上,

function($timeout) {
    var deferred = $q.defer();

    $timeout(function() {
        data = createBreadcrumbs();
        deferred.resolve(data);
    }, 1000);

    return deferred.promise;
}

Per @ Bergi的评论,

$get: function($timeout) {
    return $timeout(function() { return createBreadcrumbs();})
}