初識Promise
var promiseCount = 0
function testPromise() {
? ?var thisPromiseCount = ++promiseCount
? ?var log = 0
? ?log = '開始(同步代碼開始)'
? console.log(log)
? // 我們創(chuàng)建一個新的promise: 然后用'result'字符串完成這個promise (3秒后)
? var p1 = new Promise(function (resolve, reject) {
? // 完成函數帶著完成(resolve)或拒絕(reject)promise的能力被執(zhí)行
? log = thisPromiseCount + '' + 'Promise開始(異步代碼開始)'
? console.log(log)
? // 這只是個創(chuàng)建異步完成的示例
? ?window.setTimeout(function () {
? ? ? ?// 我們滿足(fullfil)了這個promise!
? ? ? ?// console.log('set')
? ? ? ?resolve(thisPromiseCount)
? ? ? ?}, Math.random() * 2000 + 1000)
});
// 定義當promise被滿足時應做什么
p1.then(function (val) {
? ?// 輸出一段信息和一個值
? ?log = val + '' + 'Promise被滿足了(異步代碼結束)'
? ?console.log(log)
});
log = thisPromiseCount + '' + '建立了Promise(同步代碼結束)'
console.log(log)
}
上面是從MDN改寫的例子,它的結果是

最后一條是3秒后才跳出來的。即使沒有定時器,p1.then(function (val)也是最后調用的。