异步功能在预期结果时停止工作

Async function stops working when expecting result

本文关键字:结果 停止工作 功能 异步      更新时间:2023-09-26

我有一个看起来像这样的函数:

function myAsyncFunction(num){
   if(num>10){
      return true;
   }else{
      return false;
   }
}

然后我异步调用此函数:

myAsyncFunction(100, function(result){
   console.log('The result is = ' + result); //this never gets called
});

但是控制台.log语句永远不会打印。它应该打印真或假。

例如:调用 JavaScript 函数"异步"

 function async(fn, callback) {
    setTimeout(function() {
        fn();
        callback();
      }, 0);
    }
function sync(fn) {
    fn();
 }
function foo(){
  console.log('foo');
 }
console.log('SYNC TEST --------------');
//synchronous
console.log('start sync');
sync(foo);
console.log('end sync');
console.log('');
console.log('ASYNC TEST --------------');
//asynchronous
console.log('start async');
async(foo, function(){ 
    console.log('async callback');
});
console.log('end async');

输出

SYNC TEST --------------
start sync
foo
end sync
ASYNC TEST --------------
start async
end async
foo
async callback

你做得不正确。您可以传递回调并调用回调,结果如下

function myAsyncFunction(num, callback){
   if(num > 10){
      callback(true);
   }else{
      callback(false);
   }
}
myAsyncFunction(100, function(result){
   console.log('The result is = ' + result); //this never gets called
});

您从未调用过该函数。

function myAsyncFunction(num,cb){
   if(num>10){
      cb(true);
   }else{
      cb(false);
   }
}

myAsyncFunction(100, function(result){

   console.log('The result is = ' + result); //this never gets called
});