如何在Redux传奇中使用异步等待?

时间:2018-08-21 15:16:06

标签: elasticsearch ecmascript-6 async-await redux-saga

我正在尝试使用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吗?

1 个答案:

答案 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 } } },
    ],
  });
}