-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path16.promise.js
More file actions
88 lines (79 loc) · 2.41 KB
/
Copy path16.promise.js
File metadata and controls
88 lines (79 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// let promise = new Promise((resolve,reject)=>{
// resolve(100);
// });
let fs = require("fs");
// function read(url){
// return new Promise((resolve, reject)=>{
// fs.readFile(url, "utf8", (err, data)=>{
// if(err) return reject(err);
// resolve(data);
// });
// });
// }
function promisify(fn){
return function(){
return new Promise((resolve,reject)=>{
fn(...arguments, (err, data)=>{
if(err) reject(err);
resolve(data);
});
});
}
}
//promise化 -> promisify
let read = promisify(fs.readFile);
let write = promisify(fs.writeFile);
write("./name.txt", "1234");
Promise.all([read("./name.txt", "utf8")]).then(data=>{
console.log(data);
})
// Promise.all = function(values){ //values->array
// return new Promise((resolve, reject)=>{
// let arr = [];
// let count = 0;
// function processData(key, val){
// arr[key] = val;
// if(++count == values.length){
// resolve(arr);
// }
// }
// for(let i=0; i<values.length; i++){
// let current = values[i];
// //判断当前项是promise还是普通值
// let then = current.then;
// if(then && typeof then==='function'){ //promise
// current.then(y=>{
// processData(i, y);
// }, reject);
// }else{ //普通值
// processData(i, current);
// }
// }
// });
// }
// Promise.race = function(values){
// return new Promise((resolve,reject)=>{
// for(let i=0; i<values.length; i++){
// let current = values[i];
// //判断当前项是promise还是普通值
// let then = current.then;
// if(then && typeof then==='function'){ //promise
// current.then(y=>{
// resolve(y);
// }, reject);
// }else{ //普通值
// resolve(current);
// }
// }
// });
// }
// Promise.race([read("./name.txt"), read("./age.txt"), 1,2 ,3]).then(data=>{
// console.log(data);
// }).catch(err=>{
// console.log("err", err);
// })
// Promise.all([read("./name.txt"), read("./age.txt"), 1,2 ,3]).then(data=>{
// console.log(data);
// }).catch(err=>{
// console.log("err", err);
// });