Sha*_*oon 7 javascript promise bluebird
我不一定要错,但我有:
getFromDb().then (tradeData) ->
if not tradeData
# DO NOT CONTINUE THE CHAIN
else
getLatestPrice tradeData
.then (latestPrice) ->
...
.then ->
...
.then ->
...
.catch (err) ->
next err
Run Code Online (Sandbox Code Playgroud)
如果没有tradeData,我有什么方法可以中断链?
虽然是一个公认的答案,但我想告诉所有googlers,"break()"函数已更改为"cancel()"
使用这样的东西:
p = getFromDb().then (tradeData) ->
if not tradeData
send("no data");
p.cancel(); // Look Here!!!!!!!!!!!!!!!!
else
getLatestPrice tradeData
.then (latestPrice) ->
...
.then ->
...
.then ->
...
.catch (err) ->
next err
Run Code Online (Sandbox Code Playgroud)
在此之前,请确保在config中添加以下行:
Promise.config({
cancellation: true
});
Run Code Online (Sandbox Code Playgroud)
getFromDb().then (tradeData) ->
if tradeData
getLatestPrice tradeData ->
.then (latestPrice) ->
...
.then ->
...
.then ->
...
.catch (err) ->
next err
else
getSomethingElse ->
send("no data")
Run Code Online (Sandbox Code Playgroud)
在3.0中,您将能够这样做:
p = getFromDb().then (tradeData) ->
if not tradeData
send("no data");
p.break()
else
getLatestPrice tradeData
.then (latestPrice) ->
...
.then ->
...
.then ->
...
.catch (err) ->
next err
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3668 次 |
| 最近记录: |