如果我的设备离线时运行以下代码,则card
将被添加到本地缓存中。但是应用程序永远不会转到下一行。
const data = await firebase.firestore().collection('cards').add(card);
console.log(data) // this line never get executed!
答案 0 :(得分:4)
写入方法(例如add()
)返回在服务器上完成(或拒绝)写入操作后将兑现的承诺。由于您未连接到服务器,因此永远不会发生,因此您的await
将保持封锁状态。
请注意,本地写入操作不需要await
,因为对本地缓存的写入是同步进行的。因此,一旦add(...)
调用返回(并且不会引发异常),您可以确定对本地缓存的写入已完成。因此,仅在需要知道写入也由服务器处理的情况下才应使用await
,在这种情况下,您看到的行为正是您想要的。