Dva: @ 云 谦 Cara melakukan polling panggilan hasil (api, param), menggunakan setInterval akan memunculkan kesalahan sintaksis

Dibuat pada 8 Nov 2016  ·  10Komentar  ·  Sumber: dvajs/dva

Misalnya setInterval (function () {yield call (api, param)}, 1000)

question

Komentar yang paling membantu

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

Semua 10 komentar

Bagaimana cara memeriksa antarmuka, jika saya tidak menggunakan hasil, saya tidak dapat mengoperasikan negara bagian

while (true) {
  yield call(delay, 1000);
  yield call(api, params);
}

Penundaan penulisan seperti ini akan melaporkan bahwa undefind ada dalam utilitas redux-saga, lalu bagaimana seharusnya dva memperkenalkan penundaan?

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

Proyek kami saat ini difaktor ulang dengan dva, dan sekarang kami menghadapi masalah ini, saudara, terima kasih saudara Qian

Baru mencobanya, berhasil, terima kasih @sorrycc ! ! !

Ada operasi di halaman @sorrycc yang ingin menghentikan jajak pendapat ini. Apa yang harus saya lakukan?

Hai,
Apakah ada tutorial mendetail tentang pemrosesan efek saga? Saya mengalami masalah yang sama, seperti menghentikan polling, menjalankan ulang, dll. Metode sederhana dapat dideteksi dengan flag, dan ada juga cancel, fork, takeLatest. Saya ingin tahu apakah Anda dapat memberikan beberapa contoh untuk dipelajari?
Terima kasih.

@sorrycc Saya ingin bertanya lagi, jika memang demikian, bagaimana jika loop dapat dihentikan ketika peristiwa tertentu dipicu?

Anda perlu menggunakan garpu redux-saga untuk membuat tugas, dan membatalkan tugas saat diperlukan.

    * forkInterval(actions, { fork, cancelled, put }) {
      globalInterval = yield fork(function* () {
        try {
          while (true) {
            yield delay(3000);
            yield put({ type: 'youraction'  });
          }
        } finally {
          if (yield cancelled()) {
            // 取消之后的操作,这里什么都不做
          }
        }
      });
    },

    * clearInterval(actions, { cancel }) {
      yield cancel(globalInterval);
    },
Apakah halaman ini membantu?
0 / 5 - 0 peringkat