我尝试在Promise链中将参数传递给.then。我找到了这个主题Promises, pass additional parameters to then chain,但我对JS / Promise很新,并且不能将它与我的例子相匹配。
componentDidMount() {
function getData(url) {
return new Promise(function(resolve, reject) {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", url, true);
xhttp.onload = function() {
if (xhttp.status === 200) {
resolve(JSON.parse(xhttp.response));
} else {
reject(xhttp.statusText);
}
};
xhttp.onerror = function() {
reject(xhttp.statusText);
};
xhttp.send();
});
}
function getHeaders(url) {
return new Promise(function(resolve, reject) {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", url, true);
xhttp.onload = function() {
if (xhttp.status === 200) {
resolve(getPagesNumber(xhttp.getResponseHeader("Link")));
} else {
reject(xhttp.statusText);
}
};
xhttp.onerror = function() {
reject(xhttp.statusText);
};
xhttp.send();
});
}
var promise = getData("https://api.github.com/orgs/angular/members");
promise.then(function(members) {
console.log(members);
return getHeaders("https://api.github.com/repos/angular/angular-jquery-ui/contributors")
})
.then(function(pgItr) {
console.log(pgItr);
})
.catch(function(error){
console.log(error);
});
}
我需要从
传递网址
return getHeaders("https://api.github.com/repos/angular/angular-jquery-ui/contributors")
到.then(其中是console.log(pgItr);)
我想在componentDidMount()之后添加一个变量{并在第一个.then中设置这个变量(带url),然后在第二个.then中读取它。但我认为这是一个棘手/欺骗/不合适的解决方案。
答案 0 :(得分:0)
您始终可以使用Promise.all
从then
返回多个承诺或值,如下所示:
const somePromise = Promise.resolve("some value");
somePromise
.then(someValue => Promise.all([someValue, Promise.resolve("other value")]))
.then(([someValue, otherValue]) => console.log(`[${someValue}] and [${otherValue}]`));