根据获取网址返回数据

时间:2018-11-08 23:32:48

标签: observable rxjs6

我试图根据更改后的事件获取获取的数据。我期望的结果应该是一个对象,而不是我看到的,因为获取产生了希望。

<?php use Illuminate\Routing\Controller; class ProductController extends Controller { public function index() { $category_products = Category::where('cat_ename', 'Electronic-Devices') ->first() ->products ->all(); return view('index', [ 'category_products' => $category_products ]); } } 用于将flatMap转换为对象,但看来我做错了。请让我知道如何解决。

promise

1 个答案:

答案 0 :(得分:0)

我在您的代码中看到两个问题。首先是破坏诺言-map(i => Object.assign(i, ...fetch(i.url)))。它会完全破坏它,您将无法获得结果。如果您需要修改从api返回的值,请使用thenmap(i => fetch(i.url).then(val => Object.assign(i, ...val)))

好吧,下一个问题正是可观察性。您正确地使用flatMap来解开processAdds(及其他)返回的值,但事实是这些函数返回的可观察值包装的承诺。您首先要从输入中创建可观察的内容:of(input),然后是map输入以保证。因此,当您解开flatMap的结果时,您会得到保证,这不是价值。

简单的解决方案是使用任何<something>Map运算符(例如相同的flatMap

processAdds: (input) =>
  of(input).pipe(delay(input.debounce || 1), flatMap(i => fetch(i.url))),

您可以在此处查看完整的示例-https://stackblitz.com/edit/rxjs-fetch-flatmap?devtoolsheight=60