我需要访问responseA才能在链接请求中进一步访问字段值。怎么能优雅地完成呢?
axios.get(`/endpoint`)
.then((responseA) => {
// Do something with responseA
return axios.put(signedUrl, file, options);
})
.then((responseB) => {
// Do something with responseA & responseB
})
.catch((err) => {
console.log(err.message);
});
更新:我应该提一下,在我的第一个.then()中,我返回另一个网络请求。它必须按顺序发生。
答案 0 :(得分:2)
第一个.then()
区块内发生了什么?理论上,您可以将您需要的值从responseA返回到第二个.then()
块,因为从第一个then
块返回的任何内容都将作为responseB提供。换句话说,它看起来像这样:
axios.get(`/endpoint`)
.then((responseA) => {
// additional request/logic
const moreData = someFunction()
return { responseAdata: responseA.dataYouWant, moreData: moreData }
})
.then((responseB) => {
// now responseA values will be available here as well, e.g.
responseB.responseAdata
// Do something with responseA & responseB
})
.catch((err) => {
console.log(err.message);
});
答案 1 :(得分:2)
您有很多选择可以做到这一点。
1)打破链条
let promiseA = axios.get(`/endpoint`)
let promiseB = promiseA.then((responseA) => {
// Do something with responseA
})
return Promise.all([promiseA, promiseB]).then(function([responseA, responseB]) {
// Do what you must
});
2)使用等待
let responseA = await axios.get('/endpoint/')
// You can figure out the rest
答案 2 :(得分:1)
您可以使用 protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.screenTwo); // <-- Add this line
label = FindViewById<TextView>(Resource.Id.textView1);
label.Text = Intent.GetStringExtra("Extra");
}
:
Promise.all