JS - 回调不是异步的
JS - Callback is not being asynchronous
我是一名 JS 学生 - 所以我很抱歉这个新手问题。
我有下面的代码,它不是 运行 异步的。
let var1 = 0
function fn2(){
setTimeout(()=>{var1 = 3},5000)
}
function fn1(callback){
try{
callback
}catch(error){
console.log(error)
}
console.log(1+var1)
}
fn1(fn2)
我这样写是为了让大家更容易理解。 IRL - fn2 是 API.
这里的return应该是 4
但是 returning 1
我知道这是基本的 - 对此我真的很抱歉。
我了解回调的用途 - 但这是我没有得到的语法。
编辑:对不起,伙计们,我想我的问题不够清楚,所以我要补充——“有什么办法让它起作用吗?”
太受关注了。
以防万一很难理解 Jaromanda 的说明 :) 这是一个工作示例。练习会让一切变得更容易。祝你好运:)
let var1 = 0
function fn2(){
setTimeout(()=>{
console.log('Setting var1 = 3');
var1 = 3;
console.log('adding 1 to var1. Result = ', 1 + var1);
},5000)
}
function fn1(callback){
try{
callback()
}catch(error){
console.log(error)
}
console.log(1 + var1)
}
fn1(fn2)
要在 setTimeout 后执行 console.log,您需要向 fn2 添加回调以在 setTimeout
中调用
let var1 = 0
function fn2(callback) {
setTimeout(() => {
var1 = 3;
callback();
}, 5000)
}
function fn1(callback) {
try {
callback(() => {
console.log('asynch', 1 + var1)
});
} catch (error) {
console.log(error)
}
console.log('synch', 1 + var1)
}
fn1(fn2)
或者,您可以在 fn2 中使用 Promises,在 fn1 中使用 async/await,
例如...
let var1 = 0
function fn2() {
return new Promise((resolve) => {
setTimeout(() => {
var1 = 3;
resolve();
}, 5000);
});
}
async function fn1(callback) {
try {
await callback();
} catch (error) {
console.log(error)
}
console.log(1 + var1)
}
fn1(fn2)
我是一名 JS 学生 - 所以我很抱歉这个新手问题。 我有下面的代码,它不是 运行 异步的。
let var1 = 0
function fn2(){
setTimeout(()=>{var1 = 3},5000)
}
function fn1(callback){
try{
callback
}catch(error){
console.log(error)
}
console.log(1+var1)
}
fn1(fn2)
我这样写是为了让大家更容易理解。 IRL - fn2 是 API.
这里的return应该是 4
但是 returning 1
我知道这是基本的 - 对此我真的很抱歉。 我了解回调的用途 - 但这是我没有得到的语法。
编辑:对不起,伙计们,我想我的问题不够清楚,所以我要补充——“有什么办法让它起作用吗?” 太受关注了。
以防万一很难理解 Jaromanda 的说明 :) 这是一个工作示例。练习会让一切变得更容易。祝你好运:)
let var1 = 0
function fn2(){
setTimeout(()=>{
console.log('Setting var1 = 3');
var1 = 3;
console.log('adding 1 to var1. Result = ', 1 + var1);
},5000)
}
function fn1(callback){
try{
callback()
}catch(error){
console.log(error)
}
console.log(1 + var1)
}
fn1(fn2)
要在 setTimeout 后执行 console.log,您需要向 fn2 添加回调以在 setTimeout
中调用let var1 = 0
function fn2(callback) {
setTimeout(() => {
var1 = 3;
callback();
}, 5000)
}
function fn1(callback) {
try {
callback(() => {
console.log('asynch', 1 + var1)
});
} catch (error) {
console.log(error)
}
console.log('synch', 1 + var1)
}
fn1(fn2)
或者,您可以在 fn2 中使用 Promises,在 fn1 中使用 async/await, 例如...
let var1 = 0
function fn2() {
return new Promise((resolve) => {
setTimeout(() => {
var1 = 3;
resolve();
}, 5000);
});
}
async function fn1(callback) {
try {
await callback();
} catch (error) {
console.log(error)
}
console.log(1 + var1)
}
fn1(fn2)