gpt4 book ai didi

javascript - 我可以在 javascript 中强制解决等待结果的 promise 吗?

转载 作者:行者123 更新时间:2023-11-30 10:01:39 26 4
gpt4 key购买 nike

这个问题有点学术性,因为我没有真正需要这样做。

我想知道我是否可以强制将 promise 解析为函数的返回值,这样函数调用者不知道函数包含 promise 的异步操作。

在 .NET 中,我可以通过在 Task[] 上使用函数或 return Task.Result 来做这样的事情,这会导致调用者等待任务的完成,并且调用者不会知道或关心工作是否已使用任务完成。

最佳答案

如果您使用的是 ES6,则可以使用生成器来编写这样的代码。它本质上接近于对 promise 的“阻塞”,因此您有一个长时间运行的方法的外观,它只返回您想要的值,但 async/promises 隐藏在幕后。

let asyncTask = () =>
new Promise(resolve => {
let delay = Math.floor(Math.random() * 100);

setTimeout(function () {
resolve(delay);
}, delay);
});

let makeMeLookSync = fn => {
let iterator = fn();
let loop = result => {
!result.done && result.value.then(res =>
loop(iterator.next(res)));
};

loop(iterator.next());
};

makeMeLookSync(function* () {
let result = yield asyncTask();

console.log(result);
});

此处提供更多解释和来源:http://www.tivix.com/blog/making-promises-in-a-synchronous-manner/

Here is the code在 Babeljs.io 上编译

关于javascript - 我可以在 javascript 中强制解决等待结果的 promise 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com