我試圖在+模式下打開2個文件,然後嘗試讀取其內容並將其發回給用戶。我有它使用嵌套的回調實現,但我想嘗試與承諾這樣做,所以我寫了下面的:以錯誤順序執行的嵌套承諾
var chain1 = [];
var c1Promise1 = new Promise(func(res,rej){
fs.open('path','a+',func(err,fd){
if(err)
{rej(err)}
else
{res(fd)}
})
chain1.push(c1Promise1)
//Same thing for the second promise, just different path
Promise.all(chain1).then(fds=>{
var chain2 = []
var c2Promise1 = new Promise(func(res,rej){
fs.readFile(fds[0],'utf-8',func(err,data){
console.log("data1 = " + data)
if(err){
rej(err)
}
else{
res(data)
}
})
})
chain2.push(c2Promise1)
//Same thing for c2Promise2 but different fd (fds[1]) and .log("data2 = " + data)
Promise.all(chain2).then(data=>{
console.log("data3 and 4 = " + data[0] + ' ' + data[1])
},err=>next(err))
},err=>next(err))
On console i get:
"data3 and 4" = undefined undefined
"data1 = " actual data in the file
"data2 = " actual data in the file.
我缺少的東西是不是這個應該表現得像,數據1,數據2才把數據3和4!?感謝您的幫助
沒有他們應該被嵌套Promise.all(鏈2)和內Promise.all(鏈1),因此訂單guardanteed執行:
喜歡的東西!但即時通訊我這樣一個小姐閉嘴括號!至少在我的代碼中,現在修復它。對不起浪費時間 –