首先,我们来看一个常见的例子
function 摇色子() {
setTimeout(function () {
console.log('开始摇')
var random = Math.random()
if (random > 0.5) {
return '大'
} else {
return '小'
}
}, 1000)
}
var result = 摇色子()
console.log(result)
我们打开控制台,会看到首先输出的是undefined,然后过了一秒钟输出’开始摇‘,这就是常见的异步例子,针对异步这种情况,我们一般使用回调的方法去拿到结果。
function 摇色子(callback) {
setTimeout(function () {
console.log('开始摇')
var random = Math.random()
if (random > 0.5) {
callback('大')
return '大'
} else {
callback('小')
return '小'
}
}, 1000)
}
var result = 摇色子(function(data){
console.log(data)
})
console.log(result)
结果是undefined,开始摇,大。接下来我们使用promise去接受异步的结果。
console.log(1)
function 买大() {
console.log(2)
return new Promise(function (resolve, reject) { //
console.log(3)
setTimeout(function () {
console.log(4)
var random = Math.random()
console.log(random)
if (random > 0.5) {
resolve()
} else {
reject()
}
}, 1000)
})
}
console.log(5)
var aPromise = 买大()
console.log(6)
aPromise.then(function () {
console.log(7)
console.log('win')
}, function () {
console.log(7)
console.log('lose')
})