在我从函数返回之前,我需要等到一个promise解决。基本上,我需要同步执行某些操作,JavaScript似乎并不喜欢这个想法。
这是一个简单的例子。我有一个返回promise的函数,但是在另一个promise解析之后才能创建promise。结果是我的代码看起来像这样:
const lib = require('lib')
var ret_promise
lib.func1().then(() => {
ret_promise = lib.func2()
})
return ret_promise
问题是创建了外部promise,然后它立即转到返回,并返回undefined
,因为then
尚未执行。我无法将return
放在then
内,因为所有这一切都会从内部箭头函数返回。
我该怎么做?它甚至可能吗?
注意:我使用的是节点6.我无法使用async/await
答案 0 :(得分:-1)
你很亲密,你真正需要改变的是返回原来的承诺,然后回到原来的承诺中。然后返回第二个。一旦第二个承诺结算,函数返回的promise将解析。
const lib = require('lib')
var ret_promise = lib.func1().then(() => {
return lib.func2()
})
return ret_promise
可以简化为
const lib = require('lib');
return lib.func1().then(() => lib.func2());