这是我的职能
function two(){
console.log('two')
}
function one(callback){
setTimeout(()=>{
console.log('one')
},2000)
callback()
}
one(two)
实际输出:
two
one
我的预期输出:
one
two
我的问题是如何对这些功能进行更改,以便在功能one()之后执行功能two()
答案 0 :(得分:2)
您可以像这样在callback()
的匿名函数中简单地调用setTimeout
:
function two() {
console.log('two')
}
function one(callback) {
setTimeout(() => {
console.log('one');
callback(); // execute callback after everything in setTimeout is executed
}, 2000);
}
one(two);
...或者,您可以将Promise
与ES7的async/await(或使用.then()
回调)一起使用,如下所示:
function two() {
console.log('two')
}
async function one(callback) { // make async so we can use `await`
await new Promise((resolve, rej) => { // wait for the promise to resolve ...
setTimeout(() => {
console.log('one');
resolve();
}, 2000)
});
callback(); // ... then execute the callback
}
one(two);
答案 1 :(得分:1)
这有效
let one = new Promise((resolve, reject) =>{
setTimeout(()=>{
console.log('one')
resolve(true)
},2000)
})
one.then((value) => {
console.log('two')
})
答案 2 :(得分:0)
我认为回调将在其他执行之前被调用。这也有效。
function two(){
console.log('two')
}
function one(one, callback){
console.log(one);
callback()
}
one('one', two);