Promise 是一个对象,从它可以获取异步操作的消息,是一种操作异步编程的解决方案。
一般我们会在Promise里面写一些不一定马上完成的异步方法,比如ajax获取数据,而Promise能提供两个回调函数:resolve, reject,在获取到数据之后可以根据需要触发其中一个回调函数, 下面是自己写的一个demo便于理解
用setTimeout来模拟异步获取数据,如果获取到了数据,触发recolve,并将取得的数据作为参数,否则触发reject。Promise还有几个特点:
无法取消 Promise ,一旦新建(new)它就会立即执行,无法中途取消。
如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。
处于 pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
在 JavaScript 主线程的当前运行完成之前,回调函数(then和catch)永远不会被调用。
总结:创造一个Promise对象,在里面执行一个异步任务,根据异步任务的结果,自定义回调函数resolve或reject, 并用then或catch调用。
网友评论