业务场景是这样的:我有一个函数 getValue(),从redis里面取值,如果有则返回(getValue貌似也要封装成Promise。。。),如果没有则用request去取然后再返回值。可是 request返回的值是在回调函数里面执行的,所以getValue如何同步返回回调函数里面的值呢?
是返回值,不是返回Promise。。。
这没有同步什么事情,redis取值和request都是异步事件,所以你的需求很简单。先redis取值,在其回调内做value判定,如果有直接返回,如果没有做request请求,完事再返回;
function* gen(){ var url = ‘http://example.com’; var result = yield $.get(url, (data)=>{return data;}); console.log(‘gen’); }
如果用生成器的话,yield返回的只是xmlHttpRequest,并不能返回data。。。
如果用Promise的话,感觉就是把所有的逻辑用Promise串成一根线。。。
@jkiss yield后面去跟promise
@Galen-Yip 嗯,必须是Thunk或Promise,现在明白了,最后自己把业务封装成了Promise,初步测试没啥问题
很简单啊。 用co,然后这个函数用co.wrap封装起来
@klausgao 用co的话,首先也得把Func用Promise封装起来,然后把业务逻辑写成 Generator ,然后用 co 去自动执行,对吧?
@i5ting 原来是Node Club的前辈,哈哈。其他的还行,就是那个并行还不是很理解,Gen应该也不是并行的吧?