更多参考
https://juejin.cn/post/7144308012952322084
let p = new Promise((resolve, reject) => {
setTimeout(() => {
let n = Math.round(Math.random()*2)
if(n%2==0){
resolve('world')
}
else{
reject('hello')
}
}, 2000);
})
p.then(msg=>{
console.log(`ok:${msg}`)
}).catch(err=>{
console.log(`error:${err}`)
})
console.log('dddddddd')
通过new Promise构造方法返回一个对象p,new Promise构造方法有一个参数,这个参数需要我们传入一个包含2个参数(resolve, reject)的函数,这个函数调用resolve传入的参数可以通过p.then()中回调函数参数获取;这个函数调用reject传入的参数可以通过p.then().catch()中回调函数参数获取。
p.then().catch()不是阻塞的。
另一个例子
const https = require('https');
let p = new Promise((resolve, reject) => {
https.get('https://jsonplaceholder.typicode.com/posts/1', (resp) => {
let data = '';
// 接收数据片段
resp.on('data', (chunk) => {
data += chunk;
});
// 整个响应已被接收
resp.on('end', () => {
resolve(data);
});
}).on("error", (err) => {
reject("Error: " + err.message);
});
})
p.then(msg => {
console.log(`ok:${msg}`)
}).catch(err => {
console.log(`error:${err}`)
})