为了账号安全,请及时绑定邮箱和手机立即绑定

我是 node.js 的新手并试图弄清楚异步回调是如何工作的

我是 node.js 的新手并试图弄清楚异步回调是如何工作的

慕田峪9158850 2021-07-12 12:08:34
下面给出的代码给出“一”“二”作为输出而不是“三”任何人都可以向我解释为什么没有在输出中显示三个的原因吗?我尝试了很多方法,但仍然无法弄清楚出了什么问题。const http=require('http');const fs=require('fs');function f1( ()=>{console.log("three");}){  console.log("two");}const server=http.createServer((req,res)=>{  console.log("one");  f1();});server.listen(9800);
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

正如 xavier 所评论的,这不应该只编译。您可以尝试的一种方法是:


const IamCallBack = () => { console.log("three");};

function f1(callback) {

console.log("two");

callback();

}


f1(IamCallBack);


查看完整回答
反对 回复 2021-07-15
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

以下是如何使用回调的示例:


const http=require('http');

const fs=require('fs');


function f1(arg_string,callback)

{

      console.log(arg_string);

      callback("three");

}


const server=http.createServer((req,res)=>{

});



server.listen(9800);


console.log("one");

f1("two",function(cb_string){

    console.log(cb_string);

});

这将打印:


one

two

three

首先,将“two”作为参数提供给f1,将其打印到控制台。一旦函数完成,它就会调用该callback函数。我们将回调函数定义为:


function(cb_string){

    console.log(cb_string);

}

这在调用时作为第二个参数提供f1。然后一旦f1完成运行,它将调用提供给它的任何函数:


function f1(arg_string,callback)

{

      console.log(arg_string);

      callback("three"); //<--- whatever function you used to call it

}

执行回调函数时,它会输出“三”,因为这就是f1返回给原始调用者的内容:


console.log(cb_string);


查看完整回答
反对 回复 2021-07-15
  • 2 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信