关于js中的同步和异步
我在这里简单说一下js中的同步跟异步。
JS是一门单线程语言,代码自上而下执行,就是说只有前面任务完成了后面的任务才能继续。
而异步不一样,异步就像多开了一个线程,能够同时做两件事情,最基础的两个异步函数就是setInterval和setTimeout,定时器跟延时器。
实例:
//定时器,每隔三秒钟打印一个“我好帅”
setInterval(()=>{
console.log("我好帅")
},3000)
//延时器 三秒钟之后打印“我好帅”
setTimeout(()=>{
console.log("我好帅")
},3000)
这两个函数都要等所有的同步代码执行完之后才能执行。
JSONP
能够跨域获取数据,从其他的网页来获取资料,让目标页面来回调本地页面的函数。
json的本质就是动态创建一个script标签,然后在script的src属性里面写目标网页的url地址以及一个回调函数,目标网页会执行这个回调函数,并返回数据。
用jsonp来获取百度的联想词汇
示例:
<input type="text" id="text">
<button >点</button>
document.querySelector("button").onclick=function(){
let text=document.getElementById("text").value
let json=document.createElement("script")//创建一个script标签
json.src="https://www.baidu.com/sugrec?&prod=pc&wd="+text+"&cb=fun"//cb是给目标页面执行的回调函数 callback
document.body.appendChild(json)
}
function fun(res){//回调函数res为目标页面返回的数据
console.log(res)
}
最后打印出来的的数据:
搜索“住”时:
这个是回调函数执行后打印的数据。