一、Callback Hell
ES6的出现就是为了取代Callback Hell。
CallBack Hell:
function loadImg(src, callback, fail) {
var img = document.createElement('img')
img.onload = function() {
callback(img)
}
img.onerror = function() {
fail()
}
img.src = src
}
var src = 'http://www.imoooc.com/static/img/index/logo_new.png'
loadImg(src, function(img){
console.log(img.width)
}, function() {
console.log('failed')
})
promise:
function loadImg(src) {
const 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 src = 'http://www.imoooc.com/static/img/index/logo_new.png'
var result = loadImg(src)
result.then(function(img) {
console.log(img.width)
}, function() {
console.log('failed')
})
result.then(function(img) {
console.log(img.height)
})
二、问题解答
语法:
- new Promise示例,而且要return
- new Promise时要传入函数,函数有resolve reject两个参数
- 成功时执行resolve(),失败时执行reject()
- 用then监听