Javascript承诺待定

时间:2016-01-23 07:25:56

标签: javascript promise

我终于理解了promise并实现了它,并且查询数据库的所有ajax请求都在使用它。现在我想显示某种加载进度动画,没什么好看的。

根据MDN文档here

他们声明Promise处于以下某种状态:

  • 待定:初始状态,未履行或拒绝。
  • 履行:意味着操作成功完成。
  • 拒绝:意味着操作失败。

我想知道如何利用待处理状态来显示我的动画。

承诺的例子:

function functionName(param1,param2,...){
      return new Promise(function (resolve, reject) {

         $.ajax({
               // ajax param here
               success: function (data, status) {
                         resolve(data);
                         return;
                        },
                        error: function (xhr, desc, err) {
                        console.log(xhr);
                        console.log("Details: " + desc + "\nError:" + err);
                        return;
                        }
                });
       });
};

使用它的功能;

$(document.body).on("event", "element", function (event) {
        event.preventDefault();
        var data = functionName(param1,param2,...).then(function (response) {
        data = response;
            // handeling data from Promise function
         }, function (error) {
        console.error("ERROR !", error);
        return;
        });

});

所以我想知道我们如何利用待处理状态来显示动画?

1 个答案:

答案 0 :(得分:1)

您可以修改代码,如下所示

$(document.body).on("event", "element", function (event) {
    event.preventDefault();
    var data = functionName(param1,param2,...).then(function (response) {
    // End your animation here like hide progress bar        
    data = response;
    // handeling data from Promise function
}, function (error) {
    // End your animation here like hide progress bar        
    console.error("ERROR !", error);
    return;
});
// Start your animation here like show progress bar