【问题标题】:How Promise resolve yet result from it is undefined?Promise 如何解决尚未定义的结果?
【发布时间】:2019-02-23 16:10:53
【问题描述】:

如果 promise 已解决,输出中的 repos 是如何未定义的。

输出到代码是:

从数据库中读取.......

你好

repos 是:未定义

从存储库中读取

getuser(1)
                .then( result =>{console.log('hello');getRepository(result.username)})
                .then( repos =>console.log('repos are :',repos));

相关的异步函数有

function getuser(id){
return new Promise((resolve,reject)=>{
    setTimeout(() => {
        console.log('reading from database........')
        resolve({id:id , username:"sunil"});
    }, 5000);
});

}

function getRepository(username){
return new Promise((resolve,reject)=>{
    setTimeout(()=>{
        console.log('reading from repository')
        resolve(['repos1','repos2','repos3']);  
    }
     ,3000);
})

}

【问题讨论】:

  • 你必须返回结果。 return getRepository(result.username)}

标签: javascript asynchronous promise


【解决方案1】:

您的第一个 .then 没有返回任何内容,因此它会立即解决。改为return getRepository(...

【讨论】:

    【解决方案2】:

    你的代码应该是

    getuser(1)
              .then( result =>{console.log('hello');
                     return getRepository(result.username)})
              .then( repos =>console.log('repos are :',repos));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 2018-07-16
      • 2019-09-08
      • 1970-01-01
      • 2018-02-06
      • 2018-09-18
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多