[英]how can I await a sparql request and set a variable in a nodejs app?
[英]Can I await promise resolution (HTTP request) before exporting a variable in NodeJS module?
我需要在无法进行异步处理的同步脚本中使用异步计算的值 。
如果我编写一个模块来发出HTTP请求并计算值,则当我需要/导入时,它将返回一个Promise:
// sync-script.js
const getCurrencyConversion = require('./get-currency-conversion')
getCurrencyConversion().then(result => console.log('Well too late now'))
我可以设计异步模块来等待HTTP响应并返回值而不是Promise吗? 我是不是该?
我希望能够:
// sync-script.js
const getCurrencyConversion = require('./get-currency-conversion')
const myComputedValue = getCurrencyConversion(42)
// do sync stuff with it from here on out
在我的小脚本中,阻塞不会打扰我,在继续之前等待请求是有意义的。
但我想更好地了解如何处理此类情况。 我目前的理解是,一旦异步,您将永远无法“返回”。 同步脚本需要支持异步,否则将无法正常工作。
承诺回报承诺不是价值
另外,当您将getCurrencyConversion分配给myComputedValue时 ,实际上分配了未完成的promise,因为当您定义诸如myComputedValue之类的变量时,它将立即分配,因此Javascript将不会等待。 那就是为什么JavaScript快速
您可以使用Promises使代码异步,只需将其包装成Promise
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function
您可以创建一个异步函数并获取值,然后再继续下一步。 有关更多信息,请访问https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/await,如果有保证,它将返回该值本身,否则将返回该值。
const getCurrencyConversion = require('./get-currency-conversion') const myComputedValue = async()=> await getCurrencyConversion(42); console.log('value is',myComputedValue)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.