2017-07-19 9 views
0

マップ内でサガを並行して実行する方法を理解するのに数時間を費やしました。地図内のサガの呼び出しが機能しない

私が見つけたものを試しました:yield result.map(item => call(api.endpoint, item)) しかし、何も起こっていないようです。ここで

は私がやっていたものです。

export function* syncCanvasesByFolder(<someParams>) { 
    yield call(api.syncCanvasForFolder, <someParam>); 
} 

export default function* syncAllFoldersForSurvey(<someParams>) { 

    // Get list of folder for a survey 
    const folders = yield call(data.getFolderBySurvey, surveyId); 

    //For each folder sync canvases 

    yield all(folders.map(folder => { 
      call(syncCanvasesByFolder, folder.id, lastSyncedAt, access_token) 
    })); 

/*Sequential call*/ 
// for (const i in folders) { 
//  if (folders.hasOwnProperty(i)) { 
//   yield call(syncCanvasesByFolder, folders[i].id, lastSyncedAt, access_token); 
//  // yield call(canvasSyncSaga.syncAllCanvasesForFolder, folders[i].id, lastSyncedAt); 
//  } 
// } 
} 

シーケンシャルコールは、forループで行われたときに働いています。しかし、地図の中で何も起こっていないようです。 exception/errorsも取得できません。

syncCanvasesByFolderは、マップを使用しているときに決して呼び出されません。

+0

解決を(動作しません) (フォルダ=> { (syncCanvasesByFolder、folder.id、lastSyncedAt、access_token) })))) '' –

答えて

0

暗黙のうちに中括弧{}を使用しないでください。マップ内 `歩留まりすべてを返すために持っていた(folders.map:

ブラケット付きは、ブラケット(ワークス)なし

yield all(folders.map(folder => { 
    call(syncCanvasesByFolder, folder.id, lastSyncedAt, access_token) 
})); 

yield all(folders.map(folder => call(syncCanvasesByFolder, folder.id, lastSyncedAt, access_token) 
)); 
関連する問題