面试题:没有es6老项目,如何用jq解决异步的问题?
我们都知道es6提供了promise异步写法,但是大部分的公司都是jq写的,那我们如何用Jq来写和promise异步一样的写法呢?这个知道的人不多下面我们就来写写把
注意:
1 JQ 1.5以上
2 关键api: $.Deferred()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <p>deferred test</p> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.min.js"></script> <script type="text/javascript"> // var wait = function () { // var task = function () { // console.log('执行完成') // } // setTimeout(task, 2000) // } // wait() // 已经封装好的(A 员工) function waitHandle() { // 定义 var dtd = $.Deferred() var wait = function (dtd) { var task = function () { console.log('执行完成') // 成功 dtd.resolve() // 失败 // dtd.reject() } setTimeout(task, 1000) // wait 返回 return dtd.promise() } // 最终返回 return wait(dtd) } // 使用(B 员工) var w = waitHandle() // promise 对象 $.when(w).then(function () { console.log('ok 1') }, function () { console.log('err 1') }) </script> </body> </html>
这样就可以使用了,其实promise的前身就是jq的deffered,封装好之后用法差不多,es6把他规范化了而已
相关推荐
e度空间 2020-05-16
82550495 2020-05-12
liaoxuewu 2020-01-25
liaoxuewu 2020-01-25
89463661 2020-01-25
福叔 2019-12-20
donghongbz 2019-12-22
SIMONDOMAIN 2019-12-13
宇智波鼬 2015-04-14
Luu 2016-11-19
SinhaengHhjian 2016-11-19
XTUxiaoxin 2016-11-14
aaaaaaaa00 2016-11-14
miyacnn 2019-07-12
roodyszz0 2019-07-01
luoshuitianyi 2019-06-28
82473264 2017-02-23
WCschool官方 2017-02-17
flywaterfree 2016-11-19