次のES6機能を考慮してください。私の意図は、Googleマップから方向データを取得することです。 Google Maps関数は、origin、destination、travelMode、およびcallbackをパラメータとして取ります。コールバックジェネレータの収益はアクティブ化されていません。
// Get direction data from Google API. Individual exports for testing
export function* fetchDirections() {
const mapApiGoogle = yield select(selectMapApiGoogle());
const google = mapApiGoogle.library;
const origin = yield select(selectOrigin());
const destination = yield select(selectDestination());
new google.maps.DirectionsService().route({
origin: new google.maps.LatLng(origin.lat, origin.lng),
destination: new google.maps.LatLng(destination.lat, destination.lng),
travelMode: google.maps.TravelMode.DRIVING,
}, function* (result, status) {
if (status === google.maps.DirectionsStatus.OK) {
yield put(MapDirectionsRequestedGoogleSuccess(result));
} else {
yield put(MapDirectionsRequestedGoogleError(result));
}
}
);
}
問題DirectionService()。ルート()関数が実行され、呼び出される結果とコールバックされたときに、私のfetchDirections()ジェネレータはコールバックでの歩留まりを認識しませんされています。コールバック関数で利回りを利用できるようにするには、上記のコードをどのように修正する必要がありますか?
更新日:通常、私はredux-sagaでジェネレータを使用します。テスト目的のために、私は以下のようにジェネレータを呼び出します。私は、コールバックジェネレータがインスタンス化されないので、内部のyieldに決して到達しないことに気付きました。 fetchDirections()から内部コールバックジェネレータを制御する方法や結果をテストする方法はありますか?
どのように発電機を起動していますか?あなたはそれを使っている場所でコードを表示できますか? – nils
参考までに、私はUPDATEセクションを追加しました。 – DsnKov