首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用Promise creation

重用Promise creation
EN

Stack Overflow用户
提问于 2017-06-01 14:06:54
回答 4查看 198关注 0票数 3

我试图用不同的URL调用getPromise函数来返回不同的promise,但是在second promise的then success函数中没有定义。

代码语言:javascript
复制
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)
      });
EN

回答 4

Stack Overflow用户

发布于 2017-06-01 14:10:53

确保从promise then返回数据

代码语言:javascript
复制
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)
  });

无论您从then回调返回什么,都将沿着promise链向下传递。现在您没有返回任何内容,因此隐式返回undefined

票数 3
EN

Stack Overflow用户

发布于 2017-06-01 14:10:51

你必须为下一个'then‘返回数据才能接收它。

代码语言:javascript
复制
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)
      });
票数 0
EN

Stack Overflow用户

发布于 2017-06-01 14:10:53

您可以更改函数

代码语言:javascript
复制
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)
      });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44299678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档