反应原生发展:
我正在构建反应本机应用程序,并且我正在学习理解承诺所需的基础知识。我发现很难弄清楚为什么会发生一些事情。到目前为止,我最大的问题是,我从承诺中返回的价值是我无法获得的。这是我的功能,这是控制台日志:
功能:
getUri(){
var data = this.apiclient.retrieveImages()
var outside_uri = data.then((uri) => { console.log('inside => ' + uri); return uri;})
console.log('outside => ' + outside_uri)
}
控制台日志:
outside => [object Object]
inside => https://firebasestorage.googleapis.com/v0/b/facelapse-50017.appspot.com/o/Q…M0p7x1ROK0yIN02%2F001?alt=media&token=31de9def-cd32-4d5c-ad65-f3f65ad76685
快速观察:外部是在内部打印(可能是因为承诺的异步性质)。
答案 0 :(得分:2)
解决方案:通过使我的整个函数异步并使outside_uri等待执行promise,在promise完成之前不再评估外部。
async getUri(){
var data = this.apiclient.retrieveImages()
var outside_uri = await data.then((uri) => { console.log('inside => ' + uri); return uri;})
console.log('outside => ' + outside_uri)
}