我的问题是我想访问从先前的then()获取的数据,我该怎么办? (要求:我无法修改externalBuiltInFunction())
ajaxCall(...)
.then( (response) => {
return response.json();
})
.then ( (jsonData) => {
return externalBuiltInFunction(jsonData);
})
.then ((dataFromExternalFunction) => {
... here i want to use jsonData, how can i do ?...
}
寻求帮助
答案 0 :(得分:2)
您只能在then
中使用一个async/await
语句:
ajaxCall(...)
.then(async response => {
const jsonData = await response.json();
const external = await externalBuiltInFunction(jsonData);
// Here you still have access to jsonData and external
})
答案 1 :(得分:1)
您可以将jsonData
存储在外部词汇环境中的变量中:
let jsonData;
ajaxCall(...)
.then( (response) => {
return response.json();
})
.then ( (jsonData) => {
jsonData = jsonData;
return externalBuiltInFunction(jsonData);
})
.then ((dataFromExternalFunction) => {
// jsonData is available here
}
或者,您可以将jsonData
作为数组显式传递给下一个.then
,并产生externalBuiltInFunction
调用的结果:
ajaxCall(...)
.then( (response) => {
return response.json();
})
.then ( (jsonData) => {
return Promise.all([externalBuiltInFunction(jsonData), jsonData]);
})
.then (([dataFromExternalFunction, jsonData]) => {
// jsonData is available here
}