0

내 코드에서 다중 약속을 사용하려면 어떻게해야합니까? 내가 두 번째 약속에 대한 두 번째 await를를 사용하고 싶어 할 때 당신이 볼 경우nodejs 여러 약속 사용 방법

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

을 가지고 왜 약속을 반환하지만 돌아가신't 오류가 발생 내 코드, 나는 값으로 새로운 약속을 반환했습니다. 차이점은 무엇입니까? 당신은 내가 반환 한 모든 자식 프로세스를 반환했습니다. 왜 이것이 올바르지 않습니까? –

+0

당신은 아무 것도 반환하지 않을 때 당신이 약속하지 않은 값을 반환합니다. exec 함수가 비동기이면 콜백을 사용하므로이 함수의 반환 값이 동기화 코드에서 오랫동안 사라 졌음을 의미합니다. 약속과 함께 작동 keywork을 기다리고 있습니다 –

+2

난, 감사합니다 –