我正在尝试使用非常简单的示例来了解回调和Promise。我想出了如何将为什么需要回调的示例重写为有效的“回调形式”的示例。但是,我坚持将其重写为一个诺言
我已尝试按照此处的示例来完成这项工作:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#Basic_Example
但是我在使其工作上遇到了一些麻烦。
首先,我得到了这段代码,说明了为什么回调很重要:
function first(){
// Simulate a code delay
setTimeout( function(){
console.log(1);
}, 500 );
}
function second(){
console.log(2);
}
first();
second();
然后我使用回调将其重写:
function first(callback){
// Simulate a code delay
setTimeout( function(){
console.log(1);
callback();
}, 500 );
}
function second(){
console.log(2);
}
first(second);
// second();
现在,我想知道如何将其重写为一个承诺。
let first = new Promise( function (resolve, reject){
// Simulate a code delay
setTimeout( function(){
console.log(1);
resolve('success')
}, 500 );
});
function second(){
console.log(2);
}
first.then(second());
我希望它输出的是第一个1,然后是2,现在它是输出2,然后是1。
答案 0 :(得分:2)
这是应该执行您所要求的代码。 代码中的问题是您实际上实际上是在立即调用second():
first.then(second());
而不是将函数作为参数传递({then()
将在第一个promise解析后调用它):
let first = new Promise( function (resolve, reject){
// Simulate a code delay
setTimeout( function(){
console.log(1);
resolve('success')
}, 500 );
});
function second(){
console.log(2);
}
first.then(second);