代码之家  ›  专栏  ›  技术社区  ›  Florian Walther

执行任务。什么时候成功保证了我将任务传递给它的顺序?

  •  2
  • Florian Walther  · 技术社区  · 8 年前

    我正在安卓应用程序中使用Cloud Firestore。

    我创建了两个查询,一个 whereLessThan 还有一个 whereGreaterThan 有效创建 != 查询 我为每个查询排序结果,但当我单独运行它们时,可能会先返回一个或另一个结果,这取决于哪个更快。

    当我将2个查询合并为1个查询,然后使用 Tasks.whenAllSuccess 获取1的方法 Task 并添加1 OnSuccessListener 对它来说,它会保持我传递任务的结果顺序吗?

    public void loadNotes(View v) {
        Task task1 = notebookRef
                .whereLessThan("priority", 2)
                .orderBy("priority")
                .get();
    
        Task task2 = notebookRef
                .whereGreaterThan("priority", 2)
                .orderBy("priority")
                .get();
    
        Task finalTask = Tasks.whenAllSuccess(task1, task2).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
            @Override
            public void onSuccess(List<Object> objects) {
                //will my results be ordered prioty 1 - 3 - 4 - 5....?
            }
        });
    }
    
    1 回复  |  直到 8 年前
        1
  •  4
  •   Doug Stevenson    8 年前

    任务。whenAllSuccess(和其他whenAll方法)将按照任务传递给whenAllSuccess的顺序,以列表的形式将任务的结果传递给回调。如果需要其他方式获得结果,可以使用原始任务对象维护一些数据结构,然后根据需要查询它们。