哈弗兰大的博客


  • 首页

  • web前端

  • 其他

  • 关于

js异步编程解决方案之事件发布订阅模式

发表于 2015-10-09 | 分类于 web前端

前面那一篇Promise的就对异步编程做了一个很好的处理,但是还有另外一个处理异步事件的方式,就是大名鼎鼎的 观察者模式,也就是俗称发布订阅模式,这个用的就比较广泛了,也更加厉害,因为这是一种软件开发模式,而不像前面promise只是js里面的一个规范。例子超级多,比如socket.io的emit和on方法,js添加事件监听的addEventListener函数,都是基于观察者模式。当然,这个作为异步编程的解决方法也是一个非常好的选择,而且功能也更加强大。

而且这个的实现也是非常简单,和promise相比简直太容易了。当然我们就选一个第三方的库好了,eventproxy这个用的比较多。虽然说语法比较简单,官网文档也很好,但是还是举个例子吧。

先来感受一下回调之力

阅读全文 »

js异步编程解决方案之promiseA+规范

发表于 2015-10-04 | 分类于 web前端

promsieA+是由promiseA演化增强来的,为了解决js异步回调层次过多代码,造成结构混乱难以理解的这个问题的,之前用过when.js 还有Q。Q是用在nodejs端的库,when也可以用在浏览器端,但是要重新build,我是在浏览器端用的,体积有点大啊,就作为尝试而已。

先来看一段代码感受回调之力

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var log = console.log.bind(console);
function first (cb) {
setTimeout(function () {
if (cb) cb("data 1111");
},1000)
}
function second (cb) {
setTimeout(function () {
if (cb) cb("data 22222");
},1000)
}
function third (cb) {
setTimeout(function () {
if (cb) cb("data 33333");
},1000)
}
first(function (data) {
log(data)
second(function (data) {
log(data)
third(function (data) {
log(data)
});
});
});
阅读全文 »

TCP协议及其持久连接与非持久连接

发表于 2015-08-30 | 分类于 其他

之前讲了长轮询什么的  提到了运输层的持久连接(persistent connection) 今天就来实现一下吧    总之经过多方的对比  持久连接就是长连接  与之对应的为非持久连接(non-persistent connection)    虽然运输层有TCP和UDP协议  但是不知道为什么却叫做TCP/IP忽略了UDP   反正 随便啦

首先讲一下 tcp协议  这个协议的结构是这样的

宽度为32位  32位和16位 其中首部长度4位,URG、ACK到FIN那一串为标志字段各1位,所以保留未用的有10位   其实URG PSH 和紧急指针也没有用到    然后这里涉及到的字段有:序号、确认号、ACK、SYN、FIN、数据。然后下面这个图又是关于一个完整的tcp请求的详细的过程的说明

阅读全文 »

web请求中的 轮询与长轮询

发表于 2015-08-15 | 分类于 web前端

之前偶然看到这个  于是就查了一下  发现网上的资料博客基本都是在扯淡。。。。

首先总结一下网上博客那些错误

  1. 两者的区别是在实现的逻辑上  特别是服务端的实现方式相关   与用iframe还是ajax实现并没有关系
  2. 长轮询和长连接并没什么关系     长连接是传输层的一种实现   长轮询是应用层的一种实现
    一般来说 相同的功能 web的可以使用反向ajax  服务器直接向浏览器发送数据实现    但是既然用轮询  那就研究一下吧  自己弄懂了之后   写了一个例子出来  我前端用js  后端用nodejs 框架用的express    其他平台差不多  客户端和服务端各有两种实现方式
阅读全文 »

Android开发自定义的异步HttpPost请求类

发表于 2015-06-04 | 分类于 其他

20150815  次奥。。。自己写的库太渣 自己都看不下去了   然后直接删掉了


20150703 更新:后来发现这个库   非常好用  发现这个后我快要放弃自己写post请求了


之前写过一篇关于这个的  但是后来随着代码更新  干脆吧原来那两篇都删了重新写过了

在java开发网络请求过程中  一般使用HttpClient  和HttpURLConnection这两种方法

安卓然后就出问题了  本来是想用HttpClient因为用的人比较多  而且各种东西都已经帮封装好了  比较方便  但是实际用的时候出现了一个很严重的问题  非常严重啊  导致无法使用

这个问题是这样的   安卓自带有HttpClient的类  但是版本非常旧了  到httpClient官网下载新的之后导入运行之后发现  两个HttpClient冲突了 包名类名完全一样        导致新的HttpClient类无法使用啊    为了解决冲突  貌似有个HttpClient for android 的项目  我试了好久发现依然不好用   干脆用HttpURLConnection自己封装一个吧

阅读全文 »

AndroidStudio中对Android应用进行单元测试InstrumentationTestCase

发表于 2015-06-04 | 分类于 其他

真是艰难啊   因为之前没有做过单元测试  基本都是直接在应用里面测试的   可能是因为项目都不是很大 所以好像也没有什么问题  于是今天有点空 就研究一下  听说androidStudio自带jUnit 于是就开始研究了  真艰难。。。各种查资料 全都是在adt下的安卓应用单元测试  查到androidStudio的也都是不知道在说什么 心好累。。。。

搞了一天    终于明白怎么弄了 我们的包名为 in.xjp.testcaseapplication  AndroidStudio 版本为1.2.1.1    系统 ubuntu14.04 x64  jUnit使用AndroidStudio自带版本

阅读全文 »

安卓中使用AliasActivity解决应用重复打开

发表于 2015-05-16 | 分类于 其他

之前遇到一个问题  微信支付完成后要跳转到一个指定的activity    虽然可以给这个activity设置dialog的样式 让它看起来好像是个弹框一样    但是毕竟还是另外的activity 支付后的回调数据无法直接传到调起支付的那个activity     和支付宝支付的逻辑有点不一样     于是我就想    有没有方法可以 给activity起别名    类似linux的硬链接   然后找到了    果然有AliasActivity这个类    但是和想象的不一样额。。。。。。

从源码可以看出来  AliasActivity是继承自Activity的 所谓的别名其实也是很简单的在它的onCreate里面调用startActivity跳转到目标Activity 并吧相关intent里面的data传过去 然后再把自己finish掉 做成一种直接跳转过去的假象 其实这过程中间是有个中间Activity的

阅读全文 »

安卓中webview的使用以及与js的相互调用

发表于 2015-03-15 | 分类于 其他

之前就使用了webview写了公司的安卓客户端  那时因为时间仓促赶着上线  没很多时间学习安卓  复杂的界面只能用html写了   而且这种混合的应用方式貌似还很流行啊    html5的很多跨平台应用大概都是这样的吧  在应用里面嵌入一个webview之类的 然后加载网页   不过对于我这样原本就是web前端的来说  是不是写这种混合式的应用有种先天的优势的 不需要像其他那些需要各种其他html整合工具和类库  开发工具类似hybird xdk 这种  或者是web前端框架 native.js  nativeScript这样的

我就整理一下我所知道的要注意的点吧

一、 webview的使用

阅读全文 »

git中的分支相关 fetch merge 之类的

发表于 2015-02-14 | 分类于 其他

好久没写了   不知道写什么东西好  就没写了  也太懒了自己

之前git相关的简单的命令 pull push clone add  commit 之类都用的很熟练了  之前合作开发的时候也都是用的同一个远程git地址   但是最近都是用fork的形式来合作开发的  所以 就涉及到多远程源了

一个项目 git@A:a.git 有两个人 A与B 或者更多  a是由A负责管理的  B是参与开发者  是不能直接提交到a的 无论是master还是其他分支  以前我都会是让master给A管理  合并啊 push啊 都是A   然后单独开个其他的分支必然dev给B  B只能在dev上操作    虽然没什么问题  但是不好

阅读全文 »

javascritp权威指南(第六版) 中的错误(2)

发表于 2014-11-14 | 分类于 web前端

之前发现过一个错误  在这里   传送门

后来又发现一个   关于稀疏数组的为定义位置的一些东西 因为中文版的里面居然前后矛盾了 我就查了英文版的 发现 中文版的比英文版的多了图中框出来的的一大段 这多出来大和上文想矛盾

_错误位置:_中文版 p147   英文版 p144

中文版拍照:

cc

阅读全文 »
<i class="fa fa-angle-left"></i>1…3456<i class="fa fa-angle-right"></i>

52 日志
2 分类
220 标签
RSS
Weibo GitHub
© 2025 xjpin