JavaScript ES6 Promises简化了异步任务的处理方式,这是在大多数现代Web应用程序中发挥作用的任务。JavaScript Promises不是依赖于JavaScript框架(如jQuery)所推广的回调函数,而是使用一种集中的,直观的机制来跟踪和响应异步事件。它不仅使调试异步代码变得更加容易,而且编写它也是一种乐趣。
所有JavaScript Promise都由 Promise() 构造函数生存和死亡:
<span style="color:#000000">const mypromise = new Promise(function(resolve,reject){
//在这里运行的异步代码
//调用resolve()表示任务已成功完成
//调用reject()表示任务失败
})</span>
在内部使用 resolve() 和 reject() 方法,我们可以分别在履行和拒绝承诺时向Promise对象发出信号。在 then() 与 catch() 随后方法可以调用采取fullfilled或拒绝承诺的善后工作。
我一直使用以下Promise注入的XMLHttpRequest函数的变体来顺序检索外部文件的内容,一个接一个地检索:
<span style="color:#000000">function getasync(url){
返回新的Promise((resolve,reject)=> {
const xhr = new XMLHttpRequest()
xhr.open(“GET”,url)
xhr.onload =()=> resolve(xhr.responseText)
xhr.onerror =()=>拒绝(xhr.statusText)
xhr.send()
})
}
getasync('test.txt')。then((msg)=> {
console.log(msg)//回显text.txt的内容
return getasync('test2.txt')
})。then((msg)=> {
console.log(msg)//回显text2.txt的内容
return getasync('test3.txt')
})。then((msg)=> {
console.log(msg)//回显text3.txt的内容
})</span>