javascript - 如何使函数在javascript中同步执行?或者如何让函数一个接一个地执行?
问题描述
这是我的功能
function two(){
console.log('two')
}
function one(callback){
setTimeout(()=>{
console.log('one')
},2000)
callback()
}
one(two)
实际输出:
two
one
我的预期输出:
one
two
我的问题是如何对这些函数进行更改,以便在函数 one() 之后执行函数 two()
解决方案
你可以像这样简单地调用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);
推荐阅读
- php - websile 访问时加载的文件是什么?
- java - 资源加载器路径属性的spring-boot 2.0.6速度视图问题
- c# - UTF-8 != 带有 NuSoap 和 C# 的 utf-8
- angular - Angular6 Promise 触发了两次
- indexing - 尝试使用索引修改字符串时出现语法错误
- azure - 在网络聊天中测试机器人不会返回回复。检查了许多可能的问题
- html - TypeError:无法读取未定义的属性“加入”
- python - 使用 Anaconda 在 Jupyter 笔记本中的 Scikitlearn
- c# - c# Selenium IJavaScriptExecutor 向下滚动不起作用
- python - Django 中是否有保存用户上传文件历史记录的功能?