对象转成字符串
var obj = { name:"张三", age:12 }
第一种方式;遍历对象,用等号连接键和值,将其放入数组中,用join方法拼接字符串
var arr = [];
for(var attr in obj){
arr.push(attr + '=' + obj[attr])
}//name = 张三,age = 12
console.log(arr);
var str = arr.join("&")
console.log(str);
// "name=张三&age=12"
第二种方式:遍历对象,第一次加一个空字符串后将空字符串赋值为&进行后续拼接
var str = "";
var f = '';
for(var attr in obj){
str += f + attr + '=' + obj[attr]
f = '&'
}
第三种方式:每次都拼接&,最后截取相应字符串
var str = "";
// for(var attr in obj){
// str += '&' + attr + '=' + obj[attr]
// }
for(var attr in obj){
str += attr + '=' + obj[attr] + '&'
}
str = str.slice(0,str.length-1)
console.log(str);
回调函数
当一个函数被当做参数传递的时候,这个函数就叫做回调函数 - callback
通常会使用回调函数来处理异步代码
当异步代码执行结束后,需要执行的代码,就需要放在回调函数中去执行
因为我们没有办法去确定异步代码什么结束,但是要找到执行结束后的时机,
就必须在异步代码内部,将函数作为参数放在异步代码内部,等异步代码执行结束后,
调用这个函数就能把握到异步代码执行结束的时机了
当回调函数嵌套太多了,就容易产生回调地狱 - 一行比一行缩进的厉害 - 代码不利于后期的维护 - 牵一发而动全身
promise函数
new Promsie(function(resolve,reject){
resolve()
}).then(function(){
// var p = new Promise()
// // p.then()
// return p
return new Promise()
}).then(function(){
return new Promise()
}).then(function(){
return new Promise()
}).then(function(){
// 形成链式操作的所有promise对象,可以共用一个catch
}).catch(function(){
})