问题出在哪里呢,应该怎么写呢
// 获取一个地址
function fileUrl(path) {
let res
getUrl(path).then(res => {
var reader = new FileReader();
reader.onload = (e) => {
console.log(e.target.result) // 打印成功
res = e.target.result
}
reader.readAsDataURL(res);
})
return res
}
temp.url = fileUrl('80c84de4-c8ef-4afe.png')
console.log(temp.url) // undefined
在你的另一个问题(for循环请求接口异步怎么赋值呢?)里的回答应该可以解决这个疑惑。感觉还是对异步的理解不够,参考这两篇文章,一篇理解,一篇方法:
就这个问题来说,
fileUrl()
不能直接返回 res,最多返回一个 res 的 Promise。也可通过回调来进行后续的处理过程,具体处理方式已经在上述“另一个问题”中解答。这里根据你想返回 res 的想法,再给一个解决方案 —— 不能直接返回值,但可以返回一个容器 —— 只不过容器里什么时候有值,说不清楚,需要有检查机制(或者回到 Promise 解决方案中来)
说到超时,还可以再介绍一篇博客给你:处理可能超时的异步操作 - SegmentFault 思否