promise 兩個作用
1:解決回調地獄(e惡魔金字塔)鏈式調用
2:“同步”異步的執行結果
簡單封裝 promise 實現讀取文件
有3個平級的文件 a.txt, b.txt, c,txt 其中 a里的內容是b.txt , b里的內容是c.txt , c 里放的是“hello”;
使用 promise 層層 讀取到 c里的內容
let fs =require("fs");
//封裝promise 方法 function read(filePath,encoding){ return new Promise((resolve,reject)=>{ fs.readFile(filePath,encoding,(err,data)=>{ if (err) reject(err); resolve(data); }) }) } // 調用封裝的promise read("a.txt","utf8").then(data=>{ return read(data,"utf8"); }).then((data)=>{ return read(data,"utf8"); }).then(data=>{ console.log(data); })
運行結果顯示的 是 "hello"
結論:
1.如果一個promise執行完后 返回的還是一個promise,會把這個promise 的執行結果,傳遞給下一次then中
2.如果then中返回的不是promise 是一個普通值,會將這個普通值作為下次then的成功的結果