Promise使用
Promise的使用
Es6中的Promise使得非同步變得比同步變成簡單,大大減少了程式碼量。
- 新建一個Promise物件
var p=new Promise()
- 新增非同步操作
在這裡使用了jQuery,應該在檔案中引入jQuery檔案
var p=new Promise(function(resolve,reject)
{
$.ajax({
url:'arr.txt',
dataType:'json',
success(data){
resolve(data);},
error(err){
reject(err);}
})
})
這裡應該在Promise中傳入一個函式,函式有兩個引數,一個是resolve,就是在讀取檔案正確時,將讀取到的資料傳給這一個函式,另一個是reject,就是當讀取檔案錯誤的時候,將錯誤物件傳給這一個函式。
3. then()
p.then(function(data){
console.log(data);},
function(){
console.log('錯誤');
})
這裡是讀取完成後(可能讀取成功,也可能讀取失敗),執行的then操作。then的引數中有兩個函式,就是第一個引數就是上述的resolve函式,第二個就是reject函式。
4.整體程式碼:
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
<script src="./jquery.min.js"></script>
</head>
<body>
<script>
var p=new Promise(function(resolve,reject){
$.ajax({
url:'arr.txt',
dataType:'json',
success(data){
resolve(data);},
error(err){
reject(err) }
}) })
p.then(function(data){
console.log(data);
},function(){
console.log('錯誤');
})
</script>
</body>
</html>
Promise.all()
- 基本使用
如果讀取多個檔案時,可以使用Promise.all()
Promise.all()裡面傳入一個引數------一個陣列,就是陣列裡面存放著需要讀取的物件
2.程式碼為:
<!DOCTYPE html>
<html lang="cn"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
<script src="./jquery.min.js"></script>
</head>
<body>
<script>
var p1=new Promise(function(resolve,reject){
$.ajax({
url:'arr.txt',
dataType:'json',
success(data){
resolve(data);
},
error(err){
reject(err)
}
})
});
var p2=new Promise(function(resolve,reject){
$.ajax({
url:'arr_2.txt',
dataType:'json',
success(data){
resolve(data);
},
error(err){
reject(err)
}
})
})
Promise.all([p1,p2]).then(data=>{
let [arr_1,arr_2]=data;
console.log(arr_1);
console.log(arr_2);
},error=>{
console.log('讀取錯誤');
})
</script>
</body>
</html>
在jQuery中的promise
- 在jQuery中
$.ajax({url:'arr.txt',dataType:'json'})
就是一個Promise物件 - 所以在Promise.all()中的陣列中就可以直接將其傳入,使程式碼更簡潔
- 程式碼為:
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
<script src="./jquery.min.js"></script>
</head>
<body>
<script>
Promise.all([
$.ajax({url:'arr.txt',dataType:'json'}), $.ajax({url:'arr_2.txt',dataType:'json'}), ]).then(data=>{ let [arr_1,arr_2]=data;
console.log(arr_1);
console.log(arr_2);
},error=>{
console.log('錯誤'); })
</script>
</body>
</html>
注意該例子需要在開啟伺服器才可以讀取其中的問價,因為ajax如果不能直接從本地讀取檔案資料
相關文章
- Promise的使用Promise
- 如何使用Promise.race() 和 Promise.any() ?Promise
- Promise的基本使用Promise
- Promise使用手冊Promise
- promise的理解和使用Promise
- 認識並使用PromisePromise
- promise入門基本使用Promise
- JavaScript Promise 的使用技巧JavaScriptPromise
- 認識並使用 PromisePromise
- 熟練使用使用jQuery Promise (Deferred)jQueryPromise
- Promise作用以及基本使用Promise
- ES6--promise基本使用Promise
- 為什麼要使用promisePromise
- 從使用到原理,實現符合Promise A+規範的Promise方法Promise
- 由淺入深,從掌握Promise的基本使用到手寫PromisePromise
- JavaScript基礎——Promise使用指南JavaScriptPromise
- 使用promise封裝wx.request()Promise封裝
- Promise(resolve,reject)的基本使用Promise
- 前端萌新眼中的Promise及使用前端Promise
- ES6的Promise物件的使用Promise物件
- Promise使用時應注意的問題Promise
- ES6 Promise的使用和理解Promise
- Promise 靜態 API 的使用方法PromiseAPI
- Promise的使用及簡單實現Promise
- Promise和Promise的方法Promise
- 使用 Promise.withResolvers() 來簡化你將函式 Promise 化的實現~~Promise函式
- 在 PHP 中使用 Promise + co/yield 協程PHPPromise
- N-API中的Promise功能的使用APIPromise
- future promise shared_future簡單使用Promise
- ES6 中 Promise物件使用學習Promise物件
- 一文了解Promise使用與實現Promise
- promisePromise
- Promise規範以及手寫PromisePromise
- 淺談Promise之按照Promise/A+規範實現Promise類Promise
- 使用 JavaScript Promise 讀取 Github 某使用者的資料JavaScriptPromiseGithub
- 使用 RxJs Observable 來避免 Angular 應用中的 Promise 使用JSAngularPromise
- 使用 Promise 迴圈改變 div 背景顏色Promise
- 從如何使用到如何實現一個PromisePromise