我在promise方法中使用了setTimeout,并期望它应该在延迟后一次接一个地打印我的日志。我确实看到日志正在同时打印。这是尝试过的。
function content(value) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(value);
}, 2000);
});
}
function messages(value) {
var abc = content(value);
abc.then(function (value) {
console.log(value);
});
}
messages('hurray 1');
messages('hurray 2');
答案 0 :(得分:2)
这样想:您的承诺是一个接一个地创建的,因此控制台日志不会仅被您指定的延迟抵消,而不会因创建这些承诺而延迟。因此,这些日志似乎会同时打印。
要获得所需的结果,您必须编辑代码以链接这些承诺,以便在上一个解决方案之后创建每个承诺:
function content(value){
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(value);
resolve(value);
}, 2000);
});
}
content('hurray 1').then(() => content("hurray 2")).then(() => content("hurray 3")); //& so on...
现在,每个记录都会按照您在content()
中指定的时间间隔进行记录。我使用了箭头功能以提高可读性,但是如果您愿意,可以随意用老式的方式替换它们。