我试图根据更改后的事件获取获取的数据。我期望的结果应该是一个对象,而不是我看到的,因为获取产生了希望。
<?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
答案 0 :(得分:0)
我在您的代码中看到两个问题。首先是破坏诺言-map(i => Object.assign(i, ...fetch(i.url)))
。它会完全破坏它,您将无法获得结果。如果您需要修改从api返回的值,请使用then
:map(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