这两个在执行时间方面是否有区别?
collectionReference.add(testObject)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
collectionReference.add(testObject2);
}
})
还有
collectionReference.add(testObject);
collectionReference.add(testObject2);
在第一种情况下,第二个加法将在第一个完成后执行,在第二种情况下会发生相同的事情吗?是否正在查询第二个添加项并且正在等待第一个添加项完成,或者它们正在并行运行?
答案 0 :(得分:1)
是的,这两者的执行时间会有所不同。
在第一种情况下,您要先等待服务器上的第一次写入,然后再将第二次写入发送到服务器。在图中:
Client Server
| |
|---- Send document to write ----->|
| |
| |
|<----- Response from server ------|
|---- Send document to write ----->|
| |
| |
|<----- Response from server ------|
| |
在第二种情况下,第二次写操作在第一次写操作发送之后立即发送到服务器。
Client Server
| |
|---- Send document to write ----->|
|---- Send document to write ----->|
| |
| |
| |
|<----- Response from server ------|
|<----- Response from server ------|
| |
这两者之间的性能差异是您与服务器之间的连接延迟。
请注意,这只是理论上的差异,可能还有更多影响性能的因素。