暂停功能,直到承诺解决[重复]

Posted

技术标签:

【中文标题】暂停功能,直到承诺解决[重复]【英文标题】:Pause function until promise is resolved [duplicate] 【发布时间】:2021-08-19 15:16:16 【问题描述】:

我的函数会无限期地执行,尽管我预计它会在 10 毫秒后恢复。在等待结果时,有什么方法可以刷新 超时?或者至少在我返回结果之前告诉 JS 执行/解决其他承诺?

简单的事情是,我需要响应才能继续执行。而且我不能将我的代码放在异步块中。我也不能使用'then',因为我需要返回原始结果。我认为这个 hack 会起作用,但是不行。

就我对 JS 的理解而言,这根本不可能,但我很想知道。

let test = function () 
    let wait = true;

    setTimeout(() => 
        wait = false
    , 10);

    while (wait);

    return wait;

【问题讨论】:

(示例中没有 promise,但它仍然是异步的) 这根本不可能”。你没看错。 您的代码没有显示出这种意识...... “而且我不能将我的代码放在异步块中” 为什么不呢? asyncawait 完全按照你的要求去做。 "简单的事情是,我需要响应才能继续执行。而且我不能将我的代码放在异步块中。我也不能使用'then',因为我需要返回原始结果。”我非常怀疑这是否属实。 【参考方案1】:

你可以使用 async/await 来阻塞函数的流程

例子

const mine = async() => 
console.log("start")
await anotherAsyncFunction()
console.log("done")

【讨论】:

特别想暂停主线程并等待结果。 Async/await 不这样做。 仍然,同样的想法,如果你所有的逻辑都在 await 之后出现,它将被暂停,直到 await 完成工作 没有。我正在寻找与 c / c++ 中的 '(u)sleep' 类似的功能。调度程序将暂时暂停您的 ENTIRE 进程,并允许其他进程继续运行。现在,如果您可以通过使用暂停***光纤来“刷新”可调用对象,您可以做到这一点,但您不能在 javascript 中,所以它实际上是不可能的。

以上是关于暂停功能,直到承诺解决[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何承诺此功能-nodejs [重复]

等待但从未解决/拒绝承诺内存使用[重复]

使用 jQuery 解决循环中的承诺 [重复]

将已解决的承诺值传递到最终的“then”链的最佳方法是啥[重复]

然后数组空承诺[重复]

如何在两个打印功能之间暂停 [重复]