【发布时间】:2020-09-03 18:33:42
【问题描述】:
我想知道是否有办法获取承诺的返回值并将其直接分配给 .then() 调用之外的变量并使用它?
这是我的实现。
const name = "Jane"
const age = 34
// Promise 1
function getName() {
return new Promise(function prom(resolve, reject) {
setTimeout(function () {
resolve(name) // "Jane"
}, 5000)
})
}
// Promise 2
function getAge() {
return new Promise(function prom(resolve, reject) {
setTimeout(function () {
resolve(age) // 34
}, 1500)
})
}
// Promise all
function getValue(cb) {
return Promise.all([
getName() /* Jane */,
getAge() /* 34 */
])
.then(cb, cb)
}
以上所有我尝试这样做:
const x = getValue(x => x)[1] // 34
const sum = x + 1; // 35
有什么想法吗?或者这可能吗?
谢谢!
【问题讨论】:
-
await提供了一些语法糖来做到这一点。 -
Await 不能在异步函数的执行上下文之外使用!它可能在 Deno 中工作,因为 await 可以在顶层使用,但在 vanilla JS 中我不确定。
-
除了“这感觉很奇怪,我想摆脱它”之外,还有什么特别的原因让您感到疑惑?
-
不,这是不可能的。您实际上是在问“有没有办法立即从未来获得价值?”。
标签: javascript asynchronous promise es6-promise