我正在尝试使用ES javascript api从Elastic Search中获取数据并将其显示在我的React Redux Redux-Saga代码中。
function* getData() {
const response = async () => await client.msearch({
body: [
// match all query, on all indices and types
{},
{ query: { match_all: {} } },
// query_string query, on index/mytype
{ index: 'myindex', type: 'mytype' },
{ query: { query_string: { query: '"Test 1"' } } },
],
});
yield put(Success({
Data: response(),
}));
}
问题是我不知道如何让产量等待响应被解决。 还有其他方法可以在redux saga和es javascript-client中使用promise吗?
答案 0 :(得分:5)
我知道了。将答案放在这里,供任何需要的人使用。
function* getData(data) {
const response = yield call(fetchSummary, data);
yield put(Success({
Data: response,
}));
}
async function fetchSummary(data) {
return await client.msearch({
body: [
// match all query, on all indices and types
{},
{ query: { match_all: {} } },
// query_string query, on index/mytype
{ index: 'myindex', type: 'mytype' },
{ query: { query_string: { query: data.query } } },
],
});
}