微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 返回Promises以便在点击处理程序中使用

我正在玩从AJAX方法返回的promises,看看我如何使用它们来使我的代码更容易阅读/功能.我目前的情况是有一个函数getBookIds,它向数据库发出一个AJAX调用,根据它的ID返回一本书的标题.表中有五本书和一个标签,其文本属性对应于每本书.一旦点击所有锚标签,我想要一些其他花哨的AJAX方法.这是我到目前为止所得到的:

HTML

JS

 //hacky globals
 var bookArray = [];
 bookArray.length = $('a').length;

 //ajax function
 function getBookIds(data) {
     return $.ajax({
         type: "POST",url: "Service.asmx/GetBookById",data: JSON.stringify({
             'titleId': data
         }),dataType: "json",contentType: "application/json"
     });
 }
 //click handler
 $('a').on('click',function () {
     var index = $('a').index($(this));
     var titleId = $(this).text();
     getBookIds(titleId).done(function (results) {
         bookArray[index] = results.d;
         var isEmpty = arrayChecker(bookArray);
         fancyAjax(isEmpty);
     });
 });
 //checks for undefined values in the array
 function arrayChecker(array) {
     var isEmpty = 0;
     $.each(array,function (key,val) {
         if (val === undefined) {
             isEmpty++;
         }
     });
     return (isEmpty > 0);
 }
 //bool comes from arrayChecker if no undefined then go AJAX
 function fancyAjax(bool) {
     if (!bool) {
         alert('alert message for fancy stuff');
     }
 }

这是一个人为的例子,但我很难看到如何将这些承诺融入我的日常工作中.这首先是利用承诺/延期的力量的一个坏榜样吗?似乎不是在AJAX上成功回调,而是我已经完成了所有逻辑.有关更好地解决这个问题的建议吗?

最佳答案

原文地址:https://www.jb51.cc/jquery/428262.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐