共享函数是最先被调用名吗?

我在页面上发起get请求,在请求结果回调里调用共享函数,为啥请求还没执行就先走全局共享函数了?

评论区

sszyc8

2018-05-02 14:04

//以jQuery的Ajax请求为例,请求下一页数据(注意:page是从2开始返回)
$.get('../blog/getArticles?page='+page+'&categoryId=1', function(res){
layui.each(res.articlePage.list, function(index, x){
eArticle.getCategoryNamesByIds(x.id) // 全局共享函数
});
}

......

/**
* 共享设置
* @param engine
*/
public void configEngine(Engine engine) {
//由于对象被全局共享,所以需要注意线程安全问题,尽量只共享常量以及无状态对象。
//engine.addSharedObject("RESOURCE_HOST", "http://res.jfinal.com");
engine.addSharedObject("eArticle", new ArticleEngine());
}

sszyc8

2018-05-02 14:10

总是提示 x是null 结果断点调试,发现先调用的 全局共享函数,请求还没调用。

sszyc8

2018-05-02 14:13

#(eArticle.getCategoryNamesByIds(x.id)) 我是这样在请求结果之后调用的

JFinal

2018-05-03 12:14

我看到这段代码:
eArticle.getCategoryNamesByIds(x.id) // 全局共享函数

jfinal enjoy 引擎的共享函数是在后端被 java 调用的,而你这段代码是前端页面 javascript 中的调用, 前后端本质是完全无关的,一定要区分开来

后端在渲染完事以后,响应给页面的是纯 text 文本,浏览器的 js 是在这些返回的 text 文本上做文章

热门反馈

扫码入社