Create a promise and consume a promise
example one
let p = new Promise((resolve, reject) => {
let n = Math.floor(Math.random() * 100);
let good = n % 2 == 0 ? true : false;
if (good) {
setTimeout(resolve, 100, { "dd": 1212 });
} else {
setTimeout(reject, 200, "bad2");
}
});
p.then((v) => console.log("suc", v))
.catch((v) => console.log("failed:", v));
//this is identical as the above
p.then((v) => console.log("suc", v), (v) => console.log("failed:", v));
example two
import { readFile as _readFile } from 'fs';
let p = new Promise((resolve, reject) => {
_readFile("./test.js", 'utf8', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
})
});
p.then((data) => console.log("good", data))
.catch((err) => console.log("err", err))
Use await to consume a function which return a promise
example one
function myCreate() {
return new Promise((resolve, reject) => {
let n = Math.floor(Math.random() * 100);
let good = n % 2 == 0 ? true : false;
if (good) {
setTimeout(resolve, 100, { "dd": 1212 });
} else {
setTimeout(reject, 200, "bad2");
}
});
}
try {
const ans = await myCreate();
console.log("ans", ans);
} catch (err) {
console.log("err:", err);
}
use async function to consume the promise
function myCreate() {
return new Promise((resolve, reject) => {
let n = Math.floor(Math.random() * 100);
let good = n % 2 == 0 ? true : false;
if (good) {
setTimeout(resolve, 100, { "dd": 1212 });
} else {
setTimeout(reject, 200, "bad2");
}
});
}
async function test() {
try {
const ans = await myCreate();
console.log("ans", ans);
} catch (err) {
console.log("err:", err);
}
}
test();
You still can use then to consume a promise returned by a function.
function myCreate() {
return new Promise((resolve, reject) => {
let n = Math.floor(Math.random() * 100);
let good = n % 2 == 0 ? true : false;
if (good) {
setTimeout(resolve, 100, { "dd": 1212 });
} else {
setTimeout(reject, 200, "bad2");
}
});
}
myCreate().then((ans) => console.log("ans", ans), (err) => console.log("err:", err));