1、页面编码和被请求的资源编码如果不一致如何处理?
对于 ajax 请求传递的参数,如果是 get 请求方式,参数如果传递中文,在有些浏览器
会乱码,不同的浏览器对参数编码的处理方式不同,所以对于 get 请求的参数需要使用
encodeURIComponent 函数对参数进行编码处理,后台开发语言都有相应的解码 api。对于 post 请求
不需要进行编码
2、如何避免回调地狱
(1)拆解function:过多的嵌套(缩进)会极大的影响代码的可读性。基于这一点,
可以进行一个最简单的优化----将各个步骤拆解为单个function,
该方法非常简单,具有一定的效果,但是缺少通用性。
(2)事件发布/监听模式:我们可以监听某一件事情,当事情发生的时候,进行相应的回调操作;
另一方面,当某些操作完成后,通过发布事件触发回调。这样就可以将原本捆绑在一起的代码解耦。
events 模块是node原生模块,用node实现这种模式只需要一个事件发布/监听的库。
(3)Promise:Promise是es6的规范
首先,我们需要将异步方法改写成Promise,对于符合node规范的回调函数(第一个参数必须是Error),
可以使用bluebird的promisify方法。该方法接受一个标准的异步方法并返回一个Promise对象
(4)generator:在function关键字后添加*即可将函数变为generator。
执行generator将会返回