少年別激動 我的這份隨筆里面只涉及promise概念 如果想深入了解Promise的用法 可以去阮老師es6入門里面詳讀 奉上鏈接
http://es6.ruanyifeng.com/#docs/promise
我的這份筆記很短 只是簡單的介紹了下什么是Promise
什么是Promise呢 肯定會有和我一樣的童鞋說 promise是承諾 對它的英文名的確是承諾
但它原本可不是這樣的 原本翻譯為普羅米修斯 好像是一位天神 神又是什么呢 神可以預知未來啊!!!
那我理解成Promise就是神就是可以預知未來對嗎 對的!至少我開始是這么理解的 這個promise能預知未來發生的事 正式的解釋下:
所謂Promise
,簡單說就是一個容器,里面保存着某個未來才會結束的事件(通常是一個異步操作)的結果。從語法上說,Promise是一個對象,從它可以獲取異步操作的消息。Promise提供統一的API,各種異步操作都可以用同樣的方法進行處理。(摘自阮老師的es6入門)
這夠清楚了吧!!!
我對promise還有這一種理解就是字面意思 promise 承諾
它承諾一件事 當有了結果(異步事件的結果)就會承諾回調我們 。
這些概念只是有助於理解 想用好 還是得自己動手多敲幾遍代碼 這樣才能...不說了 我去敲了~~
補上剛剛練習的代碼(用Promise異步加載圖片)
function loadImageAsync(url) {
return new Promise(function(resolve, reject) {
var image = new Image();
image.onload = function() {
resolve(image)
};
image.onerror = function() {
reject(new Error('圖片地址'+url+'加載失敗'));
};
image.src = url;
});
}
loadImageAsync('http://pic.sogou.com/news/images/logo.png').then(function(value) {
console.log(value)
})
function other() {
console.log('無阻塞執行其他的函數')
}
other() ;
優先輸出主線程的函數 '無延遲執行其他的函數'
再輸出異步執行的結果 '<img src="http://pic.sogou.com/news/images/logo.png">'