栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

函数调用Javascritpt的未定义返回值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

函数调用Javascritpt的未定义返回值

移动以下行:

res.render("index.html", content);

进入

hasNextPage
回调:

functions.getRecentPost = function ( req, res, next ) {  //.........  es.search(query, function (err, data) {    //.........    hasNextPage(_page, content.posts.length, function (data) {      content.hasNext = data;      res.render("index.html", content);    });  });};

如果希望

getRecentPost
返回某些内容,则还需要向其添加回调,以便可以使用它的返回值。例如,如果您希望这样做:

functions.getRecentPost = function ( req, res, next) {  //......  return content;}doSomething(functions.getRecentPost(x,y,z));

这将无法正常工作,因为内容的最终值将被异步检索。相反,您需要这样做:

functions.getRecentPost = function ( req, res, next, callback ) {  //.........  hasNextPage(_page, content.posts.length, function (data) {    content.hasNext = data;    res.render("index.html", content);    callback(content);  });};functions.getRecentPost(x,y,z,function(content){  doSomething(content);})

您不能异步返回数据。您需要通过编写如下代码来更改代码(和思维):

asyncFunction(function(data){    foo = data;});doSomething(foo);

到这个:

asyncFunction(function(data){    doSomething(data);});

基本上,将所有要在异步函数之后运行的代码移入传递给它的回调函数中。

常规命令式代码如下所示:

function fN () {  x = fA();  y = fB(x);  z = fC(y);  return fD(fE(z));}

异步代码如下所示:

function fN (callback) {  fA(function(x){    fB(x,function(y){      fC(y,function(z){        fE(z,function(zz){          fD(zz,function(zzz){ callback(zzz);          });        });      });    });  });}

请注意,您不返回,而是传递了一个回调。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号