Promise(fun_father)函数里包含了Promise(fun_son)函数,如果fun_father先resolve(),此时fun_son还没执行完,那么fun_son是会继续执行下去,还是终止?let status= 0const fun_father= () => { return new Promise((resolve, reject) => {
fun_son().then(() => {
status= 1
}) //例如请求之类的异步方法......
resolve("fun_father done")
})
}const fun_son = () => { return new Promise((resolve ,reject) => { //例如请求之类的异步方法......
resolve("fun_son done")
})
}
fun_father().then(msg => { console.log(msg)
})在写项目时碰到这种情况,简化后就是类似上面一样,我是希望能打印出"fun_father done",并且status也能改变为1。 这么写后,领导和我说如果fun_son执行得比fun_father快就没问题,但是如果反之,则会因为fun_father返回了,内存释放,fun_son就会终止执行。我对此还是有存疑的,但是自己试验的话没有好的测试异步方法(循环没用),setTimeout 是可以的,但不能完全说明。所以想请教大佬们,这样的写法是否可行。
1 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
按你现在的代码 fun_son 会继续执行;
补充:
你领导的意思是你这样写代码不太好, 如果fun_father
resolve 后立马就要使用 status
, 就会有不确定性.
可以稍微改一下 fun_father
的代码:
const fun_father= () => { let son = fun_son().then(() => { status= 1 }) let father = new Promise((resolve, reject) => { //例如请求之类的异步方法...... }); return Promise.all([son,father]).then(()=>{ return "fun_father done"; }) }
添加回答
举报
0/150
提交
取消