Я новичок в NodeJ. Мы все знаем, что обещание также является одним из методов синхронного выполнения в nodeJS. В моем коде это не выполняется синхронно. Кто-нибудь может сказать мне, в чем проблема в моем коде?Я приложил приведенный ниже код и вывел то, что получил сейчас. Любые комментарии будут признательны. Заранее спасибо ......
КОД:
getUser(25)
.then((user)=>{
console.log(`User:`,user.username);
getgithubRepo(user.username);
})
.then((repos)=>{
console.log("Repos:",repos);
getCommit(repos[1]);
})
.then((message)=>{
console.log(`Final Message: ${message}`);
})
.catch((err)=>{
console.log(`Reject: ${err}`);
});
function getUser(id){
return new Promise((resolve,reject)=>{
if(id === 25){
setTimeout(()=>{
console.log(`Id: ${id}`);
console.log(`Reading a user from database`);
resolve({id:id,username:'vigneshTokyo'});
},3000);
}
else{
setTimeout(()=>{
console.log(`Your given Id is not found...`);
reject(`User not found in database`);
},3000);
}
});
}
function getgithubRepo(username){
return new Promise((resolve,reject)=>{
if(username === "vigneshTokyo"){
setTimeout(()=>{
console.log(`Username: ${username}`);
console.log(`Calling Github API...`);
const repos=['vikirepo1','vikirepo2','vikirepo3'];
resolve(repos);
},2000);
}
else{
setTimeout(()=>{
console.log(`Repositories are not found of this username`);
reject(`Repositories are not found of this username`);
},2000);
}
});
}
function getCommit(repo){
return new Promise((resolve,reject)=>{
if(repo === "vikirepo2"){
setTimeout(()=>{
console.log(`Repository Name: ${repo}`);
console.log(`Going to commit this ${repo}.....`);
return resolve('Repo commited succesfully');
},2000);
}
else{
setTimeout(()=>{
return reject('Repos not found in this account');
},2000);
}
});
}
ВЫХОД:
Id: 25
Reading a user from database
User: vigneshTokyo
Repos: undefined
Reject: TypeError: Cannot read property '1' of undefined
Username: vigneshTokyo
Calling Github API...
Expected output:
Id: 25
Reading a user from database
Resolve: { id: 25, username: 'vigneshTokyo' }
Username: vigneshTokyo
Calling Github API...
List of Repostories: [ 'vikirepo1', 'vikirepo2', 'vikirepo3' ]
Repository Name: vikirepo2
Going to commit this vikirepo2.....
Message: Repo commited succesfully