编程语言
首页 > 编程语言> > javascript-重用Promise创建

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.

标签:node-js,promise,es6-promise,javascript
来源: https://codeday.me/bug/20191111/2018976.html