我会努力做到快速而简单。 我需要检索一个我正在使用的参数到一个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);
});
每个功能都有自己的模块。
提前致谢!
答案 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)
})
}