在导出nodejs模块中的变量之前,我可以等待承诺分辨率(HTTP请求)



我需要在同步脚本中使用 synchronically computed value ,我无法制作async。

如果我编写一个模块来提出HTTP请求并计算值,当我需要/导入时,它将返回承诺:

// sync-script.js
const getCurrencyConversion = require('./get-currency-conversion')
getCurrencyConversion().then(result => console.log('Well too late now'))

我可以设计我的异步模块以等待HTTP响应并返回值而不是承诺吗?我应该吗?

我希望能够:

// sync-script.js
const getCurrencyConversion = require('./get-currency-conversion')
const myComputedValue = getCurrencyConversion(42)
// do sync stuff with it from here on out

阻止我的小脚本不会打扰我,在继续之前等待请求是有意义的。

,但我想更好地了解如何处理此类情况。我目前的理解是一旦您散发出来,您就永远无法"回去"。同步脚本需要支持异步或它不起作用。

承诺返回 Promise 不是 value

另外,当您分配 getCurrencyConversion to myCompentedValue 您实际上分配了待处理的承诺,因为当您定义诸如myCompentEdvalue之类的变量时。这就是为什么JavaScript快速

您可以使用承诺做代码异步你把它包裹在承诺

https://developer.mozilla.org/en-us/docs/web/javascript/reference/refereny/statement/statement/ashync_function

您可以创建一个异步函数并在继续下一步之前获取值。有关更多信息,请访问此https://developer.mozilla.org/en-us/docs/web/javascript/reference/referent/operators/await如果是一个承诺,它将返回该值本身。

const getCurrencyConversion = require('./get-currency-conversion')
const myComputedValue = async()=> await getCurrencyConversion(42);
console.log('value is',myComputedValue)

最新更新