如何在范围内使用生成器函数

问题描述 投票:0回答:1

当我在function *(reply)中使用generateur函数时,它不会在块response.on中访问以执行产生put(push('/ dashboard'));

async function* signInUserWithEmailPassword({
  payload
}) {
  const password = payload;
  console.log("sagasssssss==>>>>", payload)
  console.log("sagas111111==>>>>", password)
  try {
    var request = new DeviceAuthQuery();
    request.setPassword('1234');
    let result;
    var response = await client.authenticate(request, {}, (err, response) => {
      console.log("Request Sent 1111");
    });

    response.on('data', function*(reply) {
      // console.log("the result is==>",result)
      console.log('Data: 22222' + reply.getAuthjwt());
      result = reply.getAuthjwt();
      console.log("the result in response scope ==>", result)
      if (result != '') {
        localStorage.setItem('user_id', result);
        yield put(push('/dashboard'));
      } else {
        alert("rrrrrrrr")
      }
    });
  } catch (error) {
    yield put(showAuthMessage(error));
  }
}
javascript reactjs redux redux-saga saga
1个回答
0
投票

这是带有try and catch的完整代码

 async function* signInUserWithEmailPassword({payload}) {
   const password = payload;
   console.log("sagasssssss==>>>>", payload)
   console.log("sagas111111==>>>>", password)
   try {
      var request = new DeviceAuthQuery();
      request.setPassword('1234');
      let result;
      var response = await client.authenticate(request, {}, (err, response) => {
          console.log("Request Sent 1111");
      });

     response.on('data', function*(reply) {
      // console.log("the result is==>",result)
       console.log('Data: 22222' + reply.getAuthjwt());
       result = reply.getAuthjwt();
       console.log("the result in response scope ==>", result)
          if (result != '') {
             localStorage.setItem('user_id', result);
             yield put(push('/dashboard'));
          } else {
             alert("rrrrrrrr")
          }
       });
       } catch (error) {
          yield put(showAuthMessage(error));
        }
      }
© www.soinside.com 2019 - 2024. All rights reserved.