[英]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.