callback

return variable from a nested callback in node.js

核能气质少年 提交于 2020-02-08 05:34:06
问题 I have the results of my query in result but I can not pass it to browser, it is showing empty. how can I return the result to res.send('result') ? myApp.get('/agg',function(req,res){ MongoClient.connect(url, function(err, db) { // Execute aggregate, notice the pipeline is expressed as an Array db.collection('projects').aggregate([{$match:{school_state:"DC"}}, {$group:{_id: "$primary_focus_subject",total_amount:{$sum: "$total_donations"}}}],function(err,result){ console.log(result); db.close(

GifFun源码学习:网络模块的分析

非 Y 不嫁゛ 提交于 2020-02-08 01:24:34
前言:GifFun是第一行代码作者郭霖大神的开源作品 GifFun地址 ,对于像作者这样的应届生来说,寻找工作的痛点是技术门槛和项目经验,由于新手的技术限制与见识广度,显然GifFun提供了一个学习的机会。在刚开始看的时候,笔者是一头雾水看不懂,学习 Kotlin后还是不懂,直到我对着代码试着重头敲一下,回头一看,便豁然开朗。 因此,学习项目最好的方法是自己敲一遍。 废话不多说,首先我们导入GifFun进Studio中,可以看到GifFun分为了4个模块,其中network显然是网络模块,网络模块下分4个包,exception显然是网络异常包,util包显然是工具包,model包为Json转换模型包,request包为网络请求包。 第一次看到这个结构的时候就跟我第一次看Android的目录结构一样。网络的第一步就是连接,所以首先要从Request入手,可以看到request包下的文件都是继承自Request文件,因此要进入Request文件查看,在进入该文件前,首先需要回顾下okhttp的完整用法: val formbody = FormBody . Builder ( ) . add ( "account" , "admin" ) . add ( "password" , "123456" ) . build ( ) ; //1 val request = Request .

Rails before_update callback with nested attributes

风格不统一 提交于 2020-02-07 11:23:29
问题 I have two models (lets call then A and B ). A has_many b s and B belongs_to A . class A < ApplicationRecord has_many :bs, dependent: :destroy, inverse_of: :a accepts_nested_attributes_for :bs, reject_if: :all_blank, allow_destroy: true validates_associated :bs end class B < ApplicationRecord belongs_to :a, inverse_of: :bs before_update :do_something, unless: Proc.new { |b| b.a.some_enum_value? if a } def do_something self.some_field = nil end end Other than that, B has a before_update

钉钉H5微应用开发

强颜欢笑 提交于 2020-02-07 11:14:03
原文地址: https://www.cnblogs.com/applerosa/p/11509512.html 此教程注意点: 适用于第三方企业开发 H5微应用 形式,非企业内部开发, 非钉钉推荐的“小程序”方式; 消息推送模式为 HTTP回调 ,不使用钉钉收费的“RDS钉钉云推送数据源“模式;    开发前准备: 关于服务器,有公网服务器最好,没有的话需要 内网穿透工具; 调试的时候,由于钉钉的H5微应用调试只能“真机”调试,极其恶心,所以 极其建议 调试的时候使用 内网穿透工具 ; 关于域名什么的,有没有无所谓,随缘; 其他一些需要明白的: 需要自备一个钉钉企业(没有的可以自己创建一个),测试应用无所谓认证不认证,发布的时候相关限制请参阅说明文档; H5微应用前端网页获取当前使用的企业的corpId ,需要在 首页URL地址里面 使用 $CORPID$ 占位符 ,然后页面里解析 url 参数,可获得 corpId 首页地址后面可以更改,创建时无所谓,回调地址需要搭建好我们自己的服务器,然后填写的时候需要验证有效性,可参考 服务端-示例 里面的 cn.lnexin.dingtalk.controller.SuiteCallbackController ::callback(args...) 在我们自身的服务器回调接口搭建好之前, 不能够填写回调地址; 在配置好回调地址前,

Callback that didn't need parameters - why?

混江龙づ霸主 提交于 2020-02-06 08:40:25
问题 So, I have been working on this 2-part problem and managed to solve it, however I have some questions on how the code actually works - specifically the nature of the callback function. Below are the 2 parts of the problem laid out, along with my solution to both. I was able to solve the first part rather easily, but the second was much more challenging for me. // FIRST PART OF PROBLEM var merge = function(array1, array2, callback){ //your code here. } var x = merge([1, 2, 3, 4], [5, 6, 7, 8],

multiple asynchronous callbacks javascript how do I resolve this?

孤街浪徒 提交于 2020-02-05 03:50:06
问题 I got myself into a tangle which probably involves multiple asynchronous callback situations. I have a javascript function called populatePageArea() Inside populatePageArea it traverses through this array-like variable called pages amongst other code. function populatePagesArea() { // there was some code before the for loop for (var i=0, l=pages.length; i<l; i++) { addToPagesArea(pages[i], ""); } // some code after... } Inside addToPagesArea function, I used the FileAPI from HTML 5 to preview

说说JSONP

青春壹個敷衍的年華 提交于 2020-02-04 08:27:18
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准; 2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>); 3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理; 4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据; 5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。 6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。 7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议

JavaScript强化教程——jQuery Callback 函数

半世苍凉 提交于 2020-02-04 08:21:03
本文为 H5EDU 机构官方 HTML5培训 HTML5培训 教程,主要介绍: JavaScript强化教程 —— jQuery Callback 函数 Callback 函数在当前动画 100% 完成之后执行。 jQuery 动画的问题 许多 jQuery 函数涉及动画。这些函数也许会将 speed 或 duration 作为可选参数。 例子:$("p").hide("slow") speed 或 duration 参数可以设置许多不同的值,比如 "slow", "fast", "normal" 或毫秒。实例 [size=14]$("button").click(function(){ $("p").hide(1000); }); [/size] 由于 JavaScript 语句(指令)是逐一执行的 - 按照次序,动画之后的语句可能会产生错误或页面冲突,因为动画还没有完成。 为了避免这个情况,您可以以参数的形式添加 Callback 函数。 jQuery Callback 函数 当动画 100% 完成后,即调用 Callback 函数。典型的语法: [size=14]$(selector).hide(speed,callback)[/size] callback 参数是一个在 hide 操作完成后被执行的函数。错误(没有 callback) [size=14]$("p")

Node.js入门:异步IO

好久不见. 提交于 2020-02-04 07:59:17
异步IO 在操作系统中,程序运行的空间分为内核空间和用户空间。我们常常提起的异步I/O,其实质是用户空间中的程序不用依赖内核空间中的I/O操作实际完成,即可进行后续任务。 同步IO的并行模式 多线程单进程 多线程的设计之处就是为了在共享的程序空间中,实现并行处理任务,从而达到充分利用CPU的效果。多线程的缺点在于执行时上下文交换的开销较大,和状态同步(锁)的问题。同样它也使得程序的编写和调用复杂化。 单线程多进程 为了避免多线程造成的使用不便问题,有的语言选择了单线程保持调用简单化,采用启动多进程的方式来达到充分利用CPU和提升总体的并行处理能力。它的缺点在于业务逻辑复杂时(涉及多个I/O调用),因为业务逻辑不能分布到多个进程之间,事务处理时长要远远大于多线程模式。 异步IO的必要性 采用同步方式的程序要完成这两个任务的时间总花销会是m + n。但是如果是采用异步方式的程序,在两种I/O可以并行的状况下(比如网络I/O与文件I/O),时间开销将会减小为max(m, n)。而当并行任务更多的时候,m + n + …与max(m, n, …)之间的孰优孰劣更是一目了然。Node.js天然地支持这种异步I/O,这是众多云计算厂商对其青睐的根本原因。 操作系统对异步I/O的支持 异步与非阻塞听起来似乎是同一回事。从实际效果的角度说,异步和非阻塞都达到了我们并行I/O的目的

跟我一起玩Win32开发(3):窗口的重绘

断了今生、忘了曾经 提交于 2020-02-03 12:42:52
c可以编译#include <Windows.h> //先声明一下消息处理函数 LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); // 入口点 int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrvInstance, LPSTR lpCommandLine, int cmdShow) { CHAR* cln = "MyApp"; //设计窗口类 WNDCLASS wc = {}; wc.hInstance = hInstance; wc.lpszClassName = cln; wc.lpfnWndProc = MyWindowProc; //注册窗口类 RegisterClass(&wc); // 创建窗口 HWND hMainwind = CreateWindow( cln, "绘制窗口", WS_OVERLAPPEDWINDOW, 20, 12, 450, 300, NULL, NULL, hInstance, NULL); // 显示窗口 if(hMainwind == NULL) return 0; ShowWindow(hMainwind,SW_NORMAL); // 消息循环 MSG msg;