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上成功回调,而是我已经完成了所有逻辑.有关更好地解决这个问题的建议吗?

最佳答案

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...