非同期コールバック関数、promiseの例、捕獲/処理異常、処理コールバック地獄
12881 ワード
非同期コールバック関数
function fun1(callback){
setTimeout(() => {
var a=100;
callback(a)
}, 1000);
}
fun1(function(a){
console.log(a)
})
promiseを実行します.thenによって成功と失敗のコールバックを指定します.function prom(path){
var promise = new Promise(function(resolve,reject){
fs.readFile(path,'utf-8',(err,data)=>{
if(err) return reject(err)
resolve(data)
})
})
// promise
return promise
}
var promNwe = prom('./text.txt')
// promise 2 , ,.then ,
promNwe.then(function(res){
console.log(res)
},function(err){
console.log(err)
})
地獄のリベンジprom('./text.txt')
.then(function (res) {
console.log(res)
prom('./text1.txt').then(function (res) {
console.log(res)
prom('./text2.txt').then(function (res) {
console.log(res)
})
})
})
プロミセを使って地獄に戻り、異常な捕獲を解決します.function prom(path){
var promise = new Promise(function(resolve,reject){
fs.readFile(path,'utf-8',(err,data)=>{
if(err) return reject(err)
resolve(data)
})
})
// promise
return promise
}
// promise 2 , ,.then ,
prom('./text.txt')
.then(function(res){
// , ,
console.log(res)
return prom('./text1.txt')
},function(err){
console.log(' ',err)
return prom('./text1.txt')
})
.then(function(res){
// .then .then prom()
console.log(res)
return prom('./text2.txt')
})
.then(function(res){
console.log(res)
}).catch(function(err){
// , catch ,
console.log(' ',err)
})