【问题标题】:What are the arguments for the promise returned by $interval in angularjs?angularjs中$interval返回的promise的参数是什么?
【发布时间】:2015-08-09 05:12:15
【问题描述】:

我正在使用 Angularjs 1.4。假设我有一个由 $interval 返回的承诺。

var promise = $interval(function () {
}, 1000);

我想利用这个承诺。

promise.then(???)

但是,我不知道这个返回的承诺有哪些参数可用。我无法在the documentation 中找到答案。

这个返回的promise的参数是什么?

【问题讨论】:

    标签: javascript angularjs promise setinterval angular-promise


    【解决方案1】:

    promise 的 then 方法的参数是:

    then(successCallback, errorCallback, notifyCallback)
    

    更多信息,see the documentation(查找:“the promise api”)


    所使用的回调以及它们的调用方式将取决于为您提供 promise 对象的函数。在$interval 的情况下,回调将按如下方式调用:

    successCallback:间隔函数完成时调用(假设设置为过期)

    errorCallback:发生错误时调用

    notifyCallback:在间隔计时器的每个滴答声中调用

    示例

    var promise = $interval(function () 
      {
      }, 1000, 10);
    
    promise.then(function (){
        //On Success: called after 10 seconds (10 x 1000ms).
    }, function (){
        //On Error: called when an error occurs.
    }, function (){
        //On Notify: called every second (1000ms).
    });
    

    【讨论】:

    • 谢谢。赞成。这是 AngularJS 中返回的所有承诺的标准吗?
    • @user768421:有关更多信息,请参阅更新的答案。但是是的,then 参数是所有 Promise 对象的标准参数,但根据提供给您的函数,它们的调用方式可能不同
    【解决方案2】:

    the docs说:

    此承诺将在间隔的每个滴答声中通知,并将 在count 迭代后解决,或者如果count 是无限期运行 没有定义的。通知的值将是 已经运行的迭代。

    所以你必须为then 方法定义一个notifyCallback 参数来处理它;此回调的参数将是迭代次数。

    【讨论】:

    • 这是notifyCallback()successCallback()在musefan的回答中吗?
    • 不,successCallback 仅在 promise 被解决时被调用。检查this example,将三个回调传递给.then;你会看到每一步只调用第三个。
    猜你喜欢
    • 2017-04-03
    • 2022-01-12
    • 2017-11-09
    • 2013-08-21
    • 1970-01-01
    • 2018-02-10
    • 2020-02-01
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多