NodeJS:如何在发送到promise时检索参数

时间:2017-08-04 15:47:31

标签: javascript node.js variables promise request

我会努力做到快速而简单。 我需要检索一个我正在使用的参数到一个promise。以下是代码的工作原理:

function foo(param) {
 return fromPromise(blabla, blabla2, param)
  .then((res) => {
   return res
  }).catch((error) => {
   console.log('Oh snap!', error);
  });

如何让参数成为'res'的一部分?我不确定我是否足够清楚...如果需要更多信息,请告诉我。 我的意思是在那种情况下我把一个返回res放到当时但是你可以把你想要的东西放在那里,我只需要'fromPromise'的结果以某种方式包含'param'。 仅供参考:在我的代码中,fromPromise是一个请求承诺,它看起来像:

function fromPromise(blabla, blabla2, param) {
 return rp({
  url: `www.someUrl.com/${blabla2}/${param}
  json: true,
 }).then((data) => {
  return data
 }).catch((error) => {
  console.log('Oh snap!', error);
 });

每个功能都有自己的模块。

提前致谢!

2 个答案:

答案 0 :(得分:2)

如果我理解你的要求,你可以这样做。

function foo(param) { //This creates a closure and param is available to functions created with in it. 
    return fromPromise(blabla, blabla2, param)
        .then((res) => {
            res.param = param; //param is available through the closeure.
            return res;
        })
        .catch((error) => {
            console.log('Oh snap!');
        });
}

或许你正试图从第二个功能中做到这一点?

function fromPromise(blabla, blabla2, param) {//This creates a closure and param is available to functions created with in it.
    return rp({
        url: `www.someUrl.com/${blabla2}/${param}
        json: true
    })
    .then((data) => {
        data.param = param;//param is available through the closeure.
        return data;
    }).catch((error) => {
        console.log('Oh snap!', error);
    });
}

答案 1 :(得分:1)

当链接promise时,函数只接受一个参数。我们所做的是使用ES6中引入的对象销毁和构造来传播多于1个参数

function A(x , y) {
   return new Promise((resolve, reject)->{
       return resolve({x, y}) //NOTE the object construction here
   });
}

function B() {
   return A(1, 2).then(({x, y})-> { //NOTE object destructio
      console.log(x);
      console.log(y)
   })
}

More on ES6 object destruction