【发布时间】:2017-03-07 19:27:42
【问题描述】:
鉴于以下code:
p = () ->
foo 5
new Promise( (resolve, reject) ->
console.log 'in promise'
resolve 'done'
)
foo = (n) ->
console.log n
if(n <= 0) then 0 else foo (n-1)
然后我称之为:
p().then (-> console.log 'hi'), (-> console.log 'there')
输出显示:
5
4
3
2
1
0
in promise
hi
首先,如果我希望p 的整个主体出现在同一个Promise 中,我必须将它包装在new Promise ( (resolve, reject) ) -> ... ) 中吗?
其次,是否有可能通过修改foo,使hi 在5/4/3/2/1/0 或in promise 之前打印?
最后,在什么情况下then的成功案例会在p()主体完全完成之前执行?
【问题讨论】:
-
"首先,如果我想让
p的整个主体出现在同一个Promise中,我必须将它包装在new Promise ( (resolve, reject) ) -> ... )中吗?"我不明白这个问题。任何直接在p内部的东西都会在你调用p时执行。如果您在Promise回调中放置任何代码,该代码将异步执行。 -
你为什么要使用 Promise?您的整个代码是同步的。如果您的实际用例是异步的,请向我们展示您的真实代码。
-
你好像真的在找
p = () -> new Promise (resolve) -> { console.log 'in promise'; foo 5; resolve 'done' }
标签: javascript coffeescript promise