嵌套承诺?如何访问返回的承诺中的价值?
Nested Promises? How to access value in a returned promise?
此代码来自 React 应用。 makeCall 函数在 Twitch 扩展示例项目中提供。我正在使用它为我的分机调用后端服务器。
makeCall(url, method="GET"){
return new Promise((resolve, reject)=>{
if(this.isAuthenticated()){
let headers={
'Content-Type':'application/json',
'Authorization': `Bearer ${this.state.token}`
}
fetch(url,
{
method,
headers,
})
.then(response=>resolve(response))
.catch(e=>reject(e))
}else{
reject('Unauthorized')
}
})
}
我可以访问响应,但我不确定上面这行代码发生了什么:.then(response=>resolve(response))
。当我调用 makeCall
时,它返回一个承诺,但我在下面访问的响应在响应中显示了一个 Promise,我不确定如何访问其中的值:
this.Authentication.makeCall(bitpostConstants.GET_STATUS_URL)
.then(response=>{
if(response.status!=200) {
console.log('Error getting status.');
} else {
var responseJson = response.json();
console.log('Response', responseJson);
// How do I access 'twitterConnected'? This is showing as undefined.
console.log('Twitter connected: ' + responseJson.twitterConnected);
下面是浏览器开发工具的日志,显示了我正在尝试访问的 属性 (twitterConnected),但如果我尝试使用上面的 responseJson.twitterConnected
访问它,则显示为未定义:
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Object
twitterConnected: false
__proto__: Object
Twitter connected: undefined
this.Authentication.makeCall(bitpostConstants.GET_STATUS_URL)
.then(response=>{
if(response.status!=200) {
console.log('Error getting status.');
} else {
response.json().then(responseJson => {
console.log('Response', responseJson);
console.log('Twitter connected: ' + responseJson.twitterConnected);
})
此代码来自 React 应用。 makeCall 函数在 Twitch 扩展示例项目中提供。我正在使用它为我的分机调用后端服务器。
makeCall(url, method="GET"){
return new Promise((resolve, reject)=>{
if(this.isAuthenticated()){
let headers={
'Content-Type':'application/json',
'Authorization': `Bearer ${this.state.token}`
}
fetch(url,
{
method,
headers,
})
.then(response=>resolve(response))
.catch(e=>reject(e))
}else{
reject('Unauthorized')
}
})
}
我可以访问响应,但我不确定上面这行代码发生了什么:.then(response=>resolve(response))
。当我调用 makeCall
时,它返回一个承诺,但我在下面访问的响应在响应中显示了一个 Promise,我不确定如何访问其中的值:
this.Authentication.makeCall(bitpostConstants.GET_STATUS_URL)
.then(response=>{
if(response.status!=200) {
console.log('Error getting status.');
} else {
var responseJson = response.json();
console.log('Response', responseJson);
// How do I access 'twitterConnected'? This is showing as undefined.
console.log('Twitter connected: ' + responseJson.twitterConnected);
下面是浏览器开发工具的日志,显示了我正在尝试访问的 属性 (twitterConnected),但如果我尝试使用上面的 responseJson.twitterConnected
访问它,则显示为未定义:
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: Object
twitterConnected: false
__proto__: Object
Twitter connected: undefined
this.Authentication.makeCall(bitpostConstants.GET_STATUS_URL)
.then(response=>{
if(response.status!=200) {
console.log('Error getting status.');
} else {
response.json().then(responseJson => {
console.log('Response', responseJson);
console.log('Twitter connected: ' + responseJson.twitterConnected);
})