1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $(document).ready(function() { var asyncTask = function(idx) { var dfd = $.Deferred(); // 获得一个 Deferred 实例 setTimeout(function() { var result = parseInt(Math.random() * 100, 10) % 2, time = (new Date()).getTime(), prefix = "jQuery " + time + " " + idx + ":"; if (result == 0) { dfd.resolve(prefix + "got an even number"); // 如果得到偶数,表示操作成功 } else { dfd.reject(prefix + "failed to get an even number"); // 反之表示操作失败 } }, 2000); // 延迟2秒执行函数 return dfd; // 返回Deferred实例 } function printResult (result) { console.info(result); } for (var i=0; i<5; i++) { asyncTask(i).then(printResult, printResult); // 执行5次,输出成功或者失败结果 } }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Employee.all = function(opt) { var opt = opt || {local: true}, dfd = $.Deferred(); if (opt.local === true) { throw new Error('not implemented!'); // 暂不实现离线存储部分的代码 } else { // 通过ajax获取员工数据, jQuery的ajax方法也同样返回了一个Deferred实例 $.ajax({ url: "/async/api/employee", dataType: "json" }).then(function(items) { var employees = []; $(items).each(function(idx, item) { employees.push(new Employee(item)) }); dfd.resolve(employees); }, function(err) { dfd.reject(err); }); } return dfd; }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $(document).ready(function() { var msg; Employee.all({local: false}).then(function(employees) { // 从服务器读取员工数据 $(employees).each(function(idx, employee) { if (employee.age >= 30) { Employee.get(employee.id, {local: false}). // 从服务器读取员工明细 then(function(employee) { employee.create({local: true}); // 将年龄大于30(含)的员工明细存于本地 }, function(err) { msg = 'failed to retrieve the detail info from the server'; console.error(msg); }); } else { employee.create({local: true}); // 将年龄小于30的员工明细存于本地 } }); }, function(err) { msg = 'failed to retrieve all employee\'s info from the server.'; console.error(msg); }); }); |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |