一諾是這可能是可用JavaScript中的承諾有什麼意義?
(...)值,現在,還是將來,或從不(來源:MDN)
所以可以說我有一個應用程序,它想與照片一起工作。照片被加載,例如算法在後臺運行後(或其他某種延遲)。現在我想檢查一下,如果圖片在未來可用,通過使用承諾,而不是回調。
要檢查,如果圖像是可用的,我可以用下面的代碼:
function loadImage(url) {
return new Promise((resolve, reject) => {
let image = new Image()
image.onload = function() {
resolve(image)
}
image.onerror = function() {
let message =
'Could not load image at ' + url
reject(new Error(msg))
}
image.src = url
})
}
的承諾,屬於這將是這個樣子:
Promise.all([
loadImage('images/pic1.jpg'),
loadImage('images/pic2.jpg')
]).then((images) => {
images.forEach(img => addImg(img.src))
}).catch((error) => {
// handle error
})
這不會因爲如果圖片在目前,而不是在未來可用,承諾將查找。圖片將在一秒鐘內出現,但承諾將返回一個錯誤。
我在這裏沒有得到有關承諾的信息?對我而言,看起來就像是檢查的整個未來方面,如果圖片可用取決於loadImage(url)
而不是實際承諾本身。
PS:實例啓發funfunfunction
的承諾怎麼會知道什麼時候解決?
據我瞭解,它不會「聽」周圍的其他代碼,更不用說可能在後臺運行的框架。我會假設在這個例子中它會是這樣的:諾言檢查是否有圖片 - >它們仍然在後臺工作 - >承諾解決並拋出錯誤 - >算法完成與圖片 - >圖片可用?
_「仍然承諾會返回一個錯誤。」 _哪裏是'在問javascript'錯誤? – guest271314
**請注意,這是假設!**我知道還有其他方法可以解決此問題。我想了解承諾如何幫助我在這裏,以及爲什麼一切似乎取決於loadImage(url),而不是承諾本身 – User12547645
*,因爲承諾將查找如果圖片可用在現在,而不是在未來* - 關於未來的事情是它有一個最終成爲現在的習慣。 –