$.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">
function waitHandle() {
var dtd = $.Deferred()
var wait = function (dtd) {
var task = function () {
console.log('执行完成')
dtd.resolve()
}
setTimeout(task, 1000)
return dtd.promise()
}
return wait(dtd)
}
var w = waitHandle()
$.when(w).then(function () {
console.log('ok 1')
}, function () {
console.log('err 1')
})
</script>
</body>
</html>
Ajax
console.log('start')
var i, sum = 0;
for (i = 0; i < 1000000000; i++) {
sum++
}
console.log(sum)
console.log(100)
alert('hello world')
console.log(200)
console.log(100)
setTimeout(function () {
console.log(200)
}, 1000)
console.log(300)
console.log(400)
console.log(100)
$.ajax({
url: './data.json',
success: function (result) {
console.log(result)
}
})
console.log(300)
console.log(400)
setTimeout(function () {
console.log(100)
})
console.log(200)
setTimeout(function () {
console.log(1)
}, 1000)
setTimeout(function () {
console.log(2)
})
console.log(3)
$.ajax({
url: './data.json',
success: function () {
console.log('a')
}
})
setTimeout(function () {
console.log('b')
}, 1000)
setTimeout(function () {
console.log('c')
})
console.log('d')
var ajax = $.ajax({
url: './data.json',
success: function () {
console.log('success 1')
console.log('success 2')
console.log('success 3')
},
error: function () {
console.log('error')
}
})
var ajax = $.ajax('./data.json')
ajax.done(function () {
console.log('success a')
}).fail(function () {
console.log('fail 1')
}).done(function () {
console.log('success b')
}).fail(function () {
console.log('fail 2')
}).done(function () {
console.log('success c')
}).fail(function () {
console.log('fail 3')
})
var ajax = $.ajax('./data.json')
ajax.then(function () {
console.log('success 100')
}, function () {
console.log('fail 100')
}).then(function () {
console.log('success 200')
}, function () {
console.log('fail 200')
}).then(function () {
console.log('success 300')
}, function () {
conso3le.log('fail 00')
})
Promise
function loadImg(src) {
var promise = new Promise(function (resolve, reject) {
var img = document.createElement('img')
img.onload = function () {
resolve(img)
}
img.onerror = function () {
reject('图片加载失败')
}
img.src = src
})
return promise
}
var src1 = 'https://www.imooc.com/static/img/index/logo_new.png'
var result1 = loadImg(src1)
var src2 = 'https://img1.mukewang.com/545862fe00017c2602200220-100-100.jpg'
var result2 = loadImg(src2)
Promise.all([result1, result2]).then(function (datas) {
console.log('all', datas[0])
console.log('all', datas[1])
})
Promise.race([result1, result2]).then(function (data) {
console.log('race', data)
})