promise的构造函数的写法模式:
var promise = new Promise((resolve,reject)=>{
if(true){
resolve(value);
}else{
reject(error)
} }
)复制代码
在业务中经常会有上传文件和下载文件的业务需求,这时候就会用到node中的读文件和写文件,
用promise来封装一个readFile
var fs = require("fs");
function readFile_promise(path){
return new Promise((resolve,reject)=>{
fs.readfile(path,"UTF-8",(err,data)=>{
if(data){
resolve(data)
}else{
reject(err)
}
})
})
}复制代码
通常一个reject状态的promise不会使当前进程退出。
promise的链式调用:
readFile_promise("foo.txtt").then((value)=>{
console.log(value)
return readFile_promise("bar.txt")
}).then(function(value){
console.log(value);
return readFile_promise("baz.txt")}).then(function(value){
console.log(value)
})复制代码
下面简化一下代码:
var list = ["foo.txt","bar.txt","baz.txt"];
var count = 0;
readFile_promise("foo.txt").then(readCB).then(readCB).then(readCB);
function readCB(data){
if(++count>2)
return
return readFile_promise(list[count])
}