我已經開始學習JavaScript承諾。但我無法理解承諾的概念。 最讓我困擾的是誰正在將Resolver和Reject函數傳遞給promise構造函數?何時或誰將解析和拒絕函數傳遞給JS promise?
見無極的這個例子:
function getImage(url){
return new Promise(function(resolve, reject){
var img = new Image()
img.onload = function(){
resolve(url)
}
img.onerror = function(){
reject(url)
}
img.src = url
})
}
現在誰不傳球的決心和拒絕的方法,因爲我理解的javascript說我此腳本將拋出未知變量錯誤,決心和廢品沒有定義?
getImage('doggy.jpg').then(function(successurl){
document.getElementById('doggyplayground').innerHTML = '<img src="' + successurl + '" />'
}).catch(function(errorurl){
console.log('Error loading ' + errorurl)
})
現在你看到的方法像上面,只有這樣,這些方法(決心和拒絕)傳遞是通過隨後,趕上在上述方法中調用的getImage使用。
'resolve'和'reject'是你傳遞到'Promise'函數的參數。 'Promise'本身調用這個函數並傳入兩個參數。 –
比較:'函數cb(resolve,reject){...};新的承諾(cb);' - 這是否有幫助...? – deceze
@deceze這也幫了我,但一個東西我仍然感到困惑,那麼爲什麼「然後」和「catch」被用來通過其他的方法?他們的工作就好像方法通過它們是解決方法和拒絕方法? – user3769778