繁体   English   中英

难以理解的promise和asycn...;

[英]difficult to understand promise and asycn... ;<

我正在学习 React API。 Promise 和 async 正在使用它。 和...

我找到了 Promise,异步 MDN 文档,但我无法理解“某些函数中的异步总是返回 Promise 对象”

 function sleep(ms){ return new Promise( resolve => setTimeout(resolve, ms)); } async function process(){ console.log('hi'); await sleep(1000); console.log('hello'); } process().then(() => { console.log('end') })

当调用async函数时,它返回一个Promise

如果 async 函数返回一个值,则 Promise 的状态将使用返回的值进行解析。

如果异步函数抛出异常或某个值,Promise 的状态将被拒绝并抛出值。

可以在 async 函数内部使用await表达式,它将暂停 async 函数的执行并等待传递给表达式的 Promise 的解析。 解析后会返回解析后的值,继续执行异步函数。

我们有 Promise 和 Observables 来处理函数或应用程序的异步性质,是的,Async 总是返回一个 Promise,而同步和异步函数都可以返回 obervables。 一个promise后跟两个关键字,

const promise = FooPromise((resolve,reject) = > {
revolve("i am resolve");
reject("i am reject");
)

在此之后,我们定义如果我们的承诺分别被这些关键字解决或拒绝时该怎么做。

.then((resolveMessage) => {
console.log(resolveMessage);
}
.catch((catchMessage) => {
console.log(CatchMessage);
}

通过async return promise object ,这意味着该函数现在返回一个承诺包装器。 您可以将其视为临时占位符,而不是发送的实际值。 承诺可以被拒绝或解决,直到承诺未完成,它将保持待处理状态。

这允许异步操作很容易发生,这可能需要一些时间并破坏正常的执行流程。

此外, .then语句适用于 Promise。 如果您尝试在没有异步的情况下访问,则会抛出错误,因为它需要一个 promise 对象。

 function sleep(ms){ return new Promise( resolve => setTimeout(resolve, ms)); } function process(){ console.log('hi'); await sleep(1000); console.log('hello'); } process().then(() => { console.log('end') })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM