javascript - 如何在 JS 中嵌套 Promise 并在不同时间解决它们?
问题描述
我认为通过运行数字 1、2 和 4 下面的代码会在 1 秒内依次出现在屏幕上。但它们同时出现。
由于我的嵌套解析在 a 内setTimeout()
,它们不应该只在前一个解析后一秒被解析吗?
var test = document.getElementById("test");
new Promise(function(resolve, reject) {
setTimeout(() => resolve(1), 1000);
}).then(result => {
test.innerHTML += result + "<br>";
return new Promise(function(resolve, reject) {
setTimeout(() => resolve(result * 2, 2000));
});
}).then(result => {
test.innerHTML += result + "<br>";
return new Promise(function(resolve, reject) {
setTimeout(() => resolve(result * 2, 3000));
});
}).then(result => {
test.innerHTML += result;
});
解决方案
为 setTimeout 正确传递第二个参数
new Promise(function(resolve, reject) {
setTimeout(() => resolve(1), 1000);
}).then(result => {
console.log(result)
return new Promise(function(resolve, reject) {
setTimeout(() => resolve(result * 2),2000);
});
}).then(result => {
console.log(result)
return new Promise(function(resolve, reject) {
setTimeout(() => resolve(result * 2),3000);
});
}).then(result => {
console.log(result)
});
推荐阅读
- python - python - 为什么不能在全局名称中使用双下划线__?
- django - Django 如何从模板中删除默认字符串“Currently: avatar/default.png”
- python - 如何在给定列表中找到加起来为某个字符串的字符串组合(没有外部库)
- java - 编译 JUnit 测试时找不到符号错误
- python - 清除用户输入的字符串上的转义
- python - discord.py 为什么@client.command 不起作用?
- android - 如何移动可缩放矩形画布
- c - 需要帮助通过 for 循环将整数添加到 C 中的整数变量,同时将 2 位数字拆分为 2 个单独的数字
- java - 在比较两个 char 数组时,它们是相同的,但我的代码说它们不是
- angularjs - WebDataRocks 数据透视表和 angularjs 的问题