微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-重用Promise创建

我试图用不同的URL调用getPromise函数以返回不同的Promise,但是在第二个Promise的then函数中未定义.

var http=require('http');
var URL='http://localhost:3000';

var getPromise=function(url){
    var promise=new Promise(function(resolve,reject){
        http.get(url,function(response){
            if(response.statusCode < 200 || response.statusCode > 299){
                reject(new Error('ErrorCode '+response.statusCode))
            }
            var result="";
            response.on('data',function(chunk){result +=chunk;} )
            response.on('end',function(){resolve(result);} )
        })
    });
   return promise;
}



getPromise(URL+'/olympic/2016/ranking/4')
      .then(function(data){
         console.log("Response "+JSON.parse(data).Country);
         getPromise(URL+'/iso/country/'+JSON.parse(data).Country);
      })
      .then(function(data){
        console.log("Data "+data)
      })
      .catch(function(err){
         console.log(err)
      });

解决方法:

确保您从诺言中返回数据,然后:

getPromise(URL+'/olympic/2016/ranking/4')
  .then(function(data){
     console.log("Response "+JSON.parse(data).Country);
     return getPromise(URL+'/iso/country/'+JSON.parse(data).Country);
  })
  .then(function(data){
    console.log("Data "+data)
  })
  .catch(function(err){
     console.log(err)
  });

无论您从回调中返回的内容如何,​​都将进一步传递给Promise链.现在,您什么都不返回,因此隐式返回undefined.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐