2017-08-20 10 views
0

私のサガでは、私は降伏する必要があるが、約束を直接返さない関数がある。この関数はこれです:約束を含むオブジェクトを返す関数の利回り

export function requestDownload(url): { 
    let resolve, reject; 
    return { 
     type: REQUEST, 
     url, 
     promise: new Promise(res=>resolve=res, rej=>reject=rej), 
     resolve, 
     reject 
    } 
} 

は私がお返しにpromiseフィールド上yieldにする必要があります。私はcallのバリエーションを試しましたが、これを行うことはできません。このrequestDownload関数を変更して、約束を直接返すことはできません。

これはredux-sagaヘルパーで可能ですか?

私がやろうとしています要約すると

私がやろうとしています:

function* mySaga() { 
    yield call(requestDownload, 'blah_url') 
} 

答えて

0

方法について:

function* mySaga() { 
    let action = yield call(requestDownload, 'blah_url') 
    try { 
     let data = yield action.promise 
    } catch(err) { 
     // deal with error 
    } 
} 
+0

おっとああ、あなたは約束の上で直接生成することができますか?私はこれを試してみる必要があります。 – Noitidart

+0

戻り値から約束を抽出する方法を 'call'に伝えるために書いてもらえますか?これは私にとってテスト容易性の方が良いでしょう。 – Noitidart

+0

私の頭に浮かぶのは、 'let {promise} = yield call(requestDownload、 'blah_url')'だけです。それより簡単なものは見つけられませんが、それは本当に問題ではありませんテスト中。 –

関連する問題