javascript:在诺言结算之前不要回复

时间:2017-11-06 19:00:41

标签: javascript node.js promise

在我从函数返回之前,我需要等到一个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

1 个答案:

答案 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());