如何在Node.js中处理异步函数

阿拉克拉伊

我一直在学习Node.js,而我的脑海中一直困扰着我的是基于Node.js的异步编程。也许我做错了事,但是尽管我做了所有的研究,但我仍无法确定我应该如何适应来自同步编程背景的技术。如果有人想从任何地方调用func2,那么如果有人给我一个基于以下结构的简单异步示例,我将不胜感激。

function1(){
  var obj = function2();
  console.log(obj); //"undefined".
}

function2(){
  //do stuff with DB and get obj
  console.log(obj); //logs obj.
  return obj;
}

我偶然发现的问题是obj在func1中打印为未定义,而func2对此没有任何问题。当我将这些函数相互嵌套时,它起作用了,使我相信,由于nodejs的异步特性,它在func2完成之前便开始登录func1。我的假设错了吗?

在上面的示例中,我遇到的困难是如何对函数进行编码,而不是将它们相互嵌套,因此我可以一次从几个不同的函数中调用func2。我研究了回调,但无法理解函数内部带有函数的各种答案中给出的示例。

橙狗

您必须在函数内定义函数(即回调)。

1  function function1(){
2    function2(function(obj) {
3      console.log(obj); //logs obj.
     });
   }

4  function function2(callbackFn){
     //do stuff with DB and get obj
     console.log(obj); //logs obj.
5    callbackFn(obj);
   }

function2可以立即从许多地方调用,而不仅仅是function1

如果您可以更具体地了解自己不了解的内容,那么您可能会得到更好的答案。


函数是值,就像数字,字符串和对象一样。

这是函数式编程的核心基础,而且可能是您尚未掌握的内容。与许多语言一样,在JavaScript中,功能不是特殊的*。这与C或Java之类的语言不同,在C / Java中,函数/方法与您在代码中处理的常规值不同。

2; // Here is a number
var a = 2; // I can assign it to a variable
console.log(2); // I can pass it as a function argument

function() {} // Here is a function
var a = function() {}; // I can assign it to a variable
console.log(function() {}); // I can pass it as a function argument

function jim() {} // This function's name is jim
var a = jim; // I can assign it to a variable
console.log(jim); // I can pass it as a function argument

(function() {})(); // I can call a function without giving it any names
jim(); // I can call a named function
a(); // I can call a function via a variable
jim.call(this, arg1); // Or I can get complicated

因此,我们可以分别声明函数并传递它们,以分别调用它们。现在,我们开始使用的代码呢?

  1. 声明一个function1不带参数的新函数
  2. function1被调用,调用function2时带一个参数,一个新的无名函数,它的obj参数
  3. 调用匿名函数时,console.log使用传递的值进行调用obj
  4. 声明一个function2带有单个参数的新函数callbackFn
  5. callbackFn用一个参数调用传递的值obj我们从某个地方得到

因此,声明顺序为1、4、2;并且执行顺序为2、5、3。

*好的,它们有点特别。它们的定义被提升,您可以执行它们所代表的代码,并且它们的声明创建作用域闭包但是这些都是另一个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Node.js中处理异步函数

来自分类Dev

如何在 redux-observable 中处理异步函数?

来自分类Dev

如何在Node.js模块中处理异步回调?

来自分类Dev

如何在保留顺序的同时异步处理Node.js中的流事件?

来自分类Dev

如何在Node.js模块中处理异步回调?

来自分类Dev

如何在node.js中创建自定义异步函数?

来自分类Dev

Node.js中的异步函数

来自分类Dev

如何从 node.js 中的异步函数返回值

来自分类Dev

如何在Node.JS中编写异步While循环

来自分类Dev

如何在node.js中创建异步方法链?

来自分类Dev

如何在异步函数中添加 sequlize.js 事务

来自分类Dev

在Node.js中的事件处理程序中异步等待

来自分类Dev

在Node.js中处理异步数据库

来自分类Dev

如何在Node.js中处理XHR Blob帖子

来自分类Dev

如何在Node.js环境中处理用户代理?

来自分类Dev

如何在node.js中处理多个imap连接?

来自分类Dev

如何在Node.js中处理与集群的TCP连接

来自分类Dev

如何在Node.js中处理不同的文件类型

来自分类Dev

即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

来自分类Dev

如何使函数等待节点js中的异步函数解析?

来自分类Dev

如何在Actix-web中的WebSocket处理程序中正确调用异步函数

来自分类Dev

如何在Node.js的while循环中处理异步操作?

来自分类Dev

如何在非异步函数中调用异步函数

来自分类Dev

如何在JavaFX中处理Node焦点

来自分类Dev

在Node.js中,如何使用node-seq顺序地链接异步函数?

来自分类Dev

如何在匿名函数中应用node.js REPL?

来自分类Dev

如何在node.js的同步函数中捕获错误?

来自分类Dev

如何在回调函数Node JS中打破for循环

来自分类Dev

如何在Node.JS的多行中写入函数的输出

Related 相关文章

  1. 1

    如何在Node.js中处理异步函数

  2. 2

    如何在 redux-observable 中处理异步函数?

  3. 3

    如何在Node.js模块中处理异步回调?

  4. 4

    如何在保留顺序的同时异步处理Node.js中的流事件?

  5. 5

    如何在Node.js模块中处理异步回调?

  6. 6

    如何在node.js中创建自定义异步函数?

  7. 7

    Node.js中的异步函数

  8. 8

    如何从 node.js 中的异步函数返回值

  9. 9

    如何在Node.JS中编写异步While循环

  10. 10

    如何在node.js中创建异步方法链?

  11. 11

    如何在异步函数中添加 sequlize.js 事务

  12. 12

    在Node.js中的事件处理程序中异步等待

  13. 13

    在Node.js中处理异步数据库

  14. 14

    如何在Node.js中处理XHR Blob帖子

  15. 15

    如何在Node.js环境中处理用户代理?

  16. 16

    如何在node.js中处理多个imap连接?

  17. 17

    如何在Node.js中处理与集群的TCP连接

  18. 18

    如何在Node.js中处理不同的文件类型

  19. 19

    即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

  20. 20

    如何使函数等待节点js中的异步函数解析?

  21. 21

    如何在Actix-web中的WebSocket处理程序中正确调用异步函数

  22. 22

    如何在Node.js的while循环中处理异步操作?

  23. 23

    如何在非异步函数中调用异步函数

  24. 24

    如何在JavaFX中处理Node焦点

  25. 25

    在Node.js中,如何使用node-seq顺序地链接异步函数?

  26. 26

    如何在匿名函数中应用node.js REPL?

  27. 27

    如何在node.js的同步函数中捕获错误?

  28. 28

    如何在回调函数Node JS中打破for循环

  29. 29

    如何在Node.JS的多行中写入函数的输出

热门标签

归档