0

私のコードではマルチ・プロミスをどのように使用できますか?私は2番目の約束のための第二のawaitを使用したいときにあなたが見る場合nodej複数の使用方法をお待ちしております

function ReadJSONFile() { 
    return new Promise((resolve, reject) => { 
     fs.readFile('import.json', 'utf-8', (err, data) => { 
      if (err) reject(err); 
      resolve(JSON.parse(data)); 
     }); 
    }); 
} 

const Get_Image = async (Path) => { 

    Child_Process = exec('node get_image.js "'+Path+'",(err,stdout,stderr) => 
     return new Promise((resolve,reject) => { 
      resolve(stdout); 
     }); 



} 


const Catch = async() => { 
    let get_json_file = await ReadJSONFile(); // this works perefectly 

    for(var i=0;i< Object.keys(get_json_file);i++) { 
     console.log(await Get_Image(get_json_file[i].image_path); //but this throw error 
    } 
} 

答えて

4

あなたがエラー

const Get_Image = async (Path) => { 
 
    return new Promise((resolve,reject) => { 
 
    Child_Process = exec('node get_image.js "'+Path+'",(err,stdout,stderr) => 
 
     
 
      resolve(stdout); 
 
     }); 
 

 
    }); 
 

 
}

+0

を得ている理由の約束を返すが、didn'tのエラーをスロー私のコードは、私は価値、何の違いで新しい約束を返したのですか?あなたは返されたすべての子プロセスを返しました、なぜこれが正しくないのですか? –

+0

あなたは何も返さないので、あなたは未定義に返す約束を返しませんでした。 exec関数が非同期でコールバックを受け取ると、この関数からの戻り値はあなたの同期コードからずっと離れています。私は、あなたがありがとう、 –

+2

を参照してください –

関連する問題