Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何始终如一地执行可观察并结合结果_Javascript_Rxjs - Fatal编程技术网

Javascript 如何始终如一地执行可观察并结合结果

Javascript 如何始终如一地执行可观察并结合结果,javascript,rxjs,Javascript,Rxjs,我对可观察链有问题,无法找到决策。 我需要等待IndexedDB的结果,将其推送到下一个请求,并将两个结果合并到最后一个可观察到的结果中。 下面是一个例子: const first$ = Database.gelAll(store); // return Observable first.mergeMap((data) => { const uuids = data.map((v) => { return v.uuid; }); // here i need t

我对可观察链有问题,无法找到决策。 我需要等待IndexedDB的结果,将其推送到下一个请求,并将两个结果合并到最后一个可观察到的结果中。 下面是一个例子:

const first$ = Database.gelAll(store); // return Observable
first.mergeMap((data) => {
  const uuids = data.map((v) => {
    return v.uuid;
  });

  // here i need to send request with 'uuids' array and combine result with 
     values from first request
  const second$ = database.find(store, {'uuid': uuids}); // return Observable
});

谢谢您的建议。

如果我理解正确,您正在尝试使您的可观察对象的最终结果是一个对象,它既包含来自
数据库的结果。gelAll
也包含来自
数据库的结果。find
。为此,只需在
数据库.find
之后添加一个.map语句,并将其返回到合并映射

Database.gelAll(store)
  .mergeMap((data) => {
    const uuids = data.map((v) => v.uuid);

    return database.find(store, {'uuid': uuids})
      .map((databaseResult) => {
        // Combine with data in some fashion
        return {
          firstData: data,
          secondData: databaseResult
        }
      });
  })

  .subscribe(objectWithBothFirstDataAndSecondData => {
    console.log(objectWithBothFirstDataAndSecondData)
  });

此外,您应该考虑<代码> .CyMeMaP < /C>是否合适。如果

.gelAll
只发出一个值,则应该可以,但在大多数情况下,
.switchMap
.concatMap
.mergeMap
更好。使用mergeMap,您无法保证订单。Switchmap确保只使用最新版本,concatMap确保所有内容都能通过,但它们按照要求的顺序通过。

您还没有告诉我们问题所在。和
mergeMap
创建并返回一个新的可观察对象,但它看起来并不像您将其分配给任何对象。谢谢。这是我一直在寻找的答案,谢谢你对地图的解释。