學(xué)promise來我這里肯定沒錯了
ECMAScript promise的到來就是為了解決AJAX嵌套的請求
$.ajax({
url: './t1.txt',
dataType: 'text',
success: data => {
$.ajax({
url: './t1.txt',
dataType: 'text',
success: data => {
$.ajax({
url: './t1.txt',
dataType: 'text',
success: data => {
console.log(data);
},
error: err => {
console.log(err);
}
})
},
error: err => {
console.log(err);
}
})
},
error: err => {
console.log(err);
}
})
promise 他是在未來 或者某一個時間 執(zhí)行的一些事情榴芳;先簡單的看看的Promise實(shí)例:
//此時的是一進(jìn)頁面就會執(zhí)行的一個實(shí)例
var promise1 = new Promise((resolve, reject) =>{
// 當(dāng)然這個 promise 不寫 ajax 也行 隨便寫個if 判斷也行
$.ajax({
url: './t3.txt',
dataType: 'text',
success: data =>{
//當(dāng)請求成功 調(diào)用promise 成功回調(diào)函數(shù)
resolve(data);
},
error: err => {
//當(dāng)請求失敗 調(diào)用 promise 失敗回調(diào)函數(shù)
reject(err);
}
})
})
//promise1.then() 你可以看出來 第一個的回調(diào)函數(shù)是成功 第二個的回調(diào)函數(shù)是失敗
promise1.then((data)=>{
console.log(data);
},(err)=>{
console.log(err);
})
也許你會想現(xiàn)在不也和直接請求ajax一樣嗎沒有什么區(qū)別 別著急嗎?
var promise1 = new Promise((resolve, reject) =>{
$.ajax({
url: './t1.txt',
dataType: 'text',
success: data =>{
resolve(data);
},
error: err => {
reject(err);
}
})
})
var promise2 = new Promise((resolve, reject) =>{
$.ajax({
url: './t2.txt',
dataType: 'text',
success: data =>{
resolve(data);
},
error: err => {
reject(err);
}
})
})
var promise3 = new Promise((resolve, reject) =>{
$.ajax({
url: './t3.txt',
dataType: 'text',
success: data =>{
resolve(data);
},
error: err => {
reject(err);
}
})
})
promise1.then((data)=>{
console.log(data);
},(err)=>{
console.log(err);
})
promise1.then((data)=>{
console.log(data);
},(err)=>{
console.log(err);
})
promise1.then((data)=>{
console.log(data);
},(err)=>{
console.log(err);
})
是不是這樣看起來也挺繁瑣 好了 不啰嗦了
function getTxt(url){
//此時的是一進(jìn)頁面就會執(zhí)行的一個實(shí)例
return new Promise((resolve, reject) =>{
// 當(dāng)然這個 promise 不寫 ajax 也行 隨便寫個if 判斷也行
$.ajax({
url,
dataType: 'text',
success: data =>{
//當(dāng)請求成功 調(diào)用promise 成功回調(diào)函數(shù)
resolve(data);
},
error: err => {
//當(dāng)請求失敗 調(diào)用 promise 失敗回調(diào)函數(shù)
reject(err);
}
})
})
}
//Promise.all() 里面只有一個參數(shù) 那就是一個數(shù)組 數(shù)組里面的每一項(xiàng)必須是一個promise 實(shí)例對象
//當(dāng)然 all 是什么意思 是全部 他要是只有一個沒用請求過來的話 那就會直接執(zhí)行 err 函數(shù)
// 成功力的回調(diào)函數(shù) 只有一個參數(shù) 也是一個數(shù)組 里面裝的是 3個請求過來的 數(shù)據(jù)
Promise.all([getTxt('t1.txt'),getTxt('t2.txt'),getTxt('t3.txt')]).then((data)=>{
console.log(data);
},(err)=>{
console.log(err);
})
promise =》 承諾 狀態(tài)一旦改變 就永遠(yuǎn)不會改變
promise 常用的方法我目前了解的就這幾個火本,
如果大家有什么不懂得或者是不理解的可以留言哦