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])
}