<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
/**
* 如果我想分三次输出字符串,第一次间隔 1 秒,第二次间隔 4 秒,第三次间隔 3 秒:
* */
function count() {
//两个参数,第一个方法,第二个时间
setTimeout(function () {
//3秒后执行这段代码
console.log("first")
setTimeout(function () {
// 接着两秒后再执行这段代码
console.log("second")
setTimeout(function () {
//4秒后再执行这段代码
console.log("three")
}, 4000)
}, 2000)
}, 3000)
}
count();
/**
* 使用Promise来实现
* 只有一个参数为起始函数,Promise构造时自动执行,起始函数有两个参数,
* */
new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("First");
resolve();
}, 1000);
}).then(function () {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("Second");
resolve();
}, 4000);
});
//下面的这处then方法是上一个return返回的
}).then(function () {
setTimeout(function () {
console.log("Third");
}, 3000);
});
/**
* 进一步优化
* 将它的核心部分写成一个 Promise 函数
*/
function print(delay, message) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(message);
resolve();
}, delay);
})
}
print(1000, "first").then(function () {
return print(4000, "second")
}).then(function () {
print(3000, "third");
})
</script>
</body>
</html>
https://www.runoob.com/js/js-promise.html
公众号.png
网友评论