ES 6基礎知識点3
6296 ワード
ES 6基礎知識点3 1モジュール 1.1モジュールケース 2ジェネレータGeneratorの初歩的な認識 2.1オブジェクトに対する反復 3 Promise承諾 3.1コールバック関数 .3.2 Promiseによりコールバック関数を実現する機能 1モジュール
1.1モジュールケースインポート:import{name}from"./be.js"; エクスポート:export{name} be.js
be.htrml
2ジェネレータGeneratorの初歩的な認識 js反復可能なタイプString Set Map Arry; の目的は、ステップをスキップすることなく、ステップを継続して実行できるようにすることができる.
2.1オブジェクトの反復
3 Promise承諾分離 3.1コールバック関数の欠点階層が多すぎると、コードが非常に肥大化します.
3.2 Promiseによるコールバック関数の機能
1.1モジュールケース
var name="tom";
function func(){
console.log("hellow"+name);
}
class Cat {
constructor(name) {
this.name=name
}
}
//
export{name,func}
//
export default Cat;
be.htrml
//
import Cat,{name,func} from "./be.js";
console.log(name)
func();
var c1=new Cat("jack");
console.log(c1);
2ジェネレータGeneratorの初歩的な認識
function * gen() {
yield " 1";
yield " 2";
yield " 3";
yield " 4";
}
var iter = gen();
// yield
// next yield
// yield {value:yield ,done:false}
/* console.log(iter.next())
console.log(iter.next())
console.log(iter.next())
console.log(iter.next())
console.log(iter.next())
console.log(iter.next()) */
for (let item of iter) {
console.log(item)
}
2.1オブジェクトの反復
var obj = {
name: "mumu",
age: 18,
weight: 130
};
//
function* gen(obj) {
var keys = Object.keys(obj);
// key( )
// yield [ , ]
for (var i = 0; i < keys.length; i++) {
yield [keys[i], obj[keys[i]]];
}
}
//
// k ,v
// for(let [k,v] of iter){
// console.log(k,v)
// }
// h1
var iter=gen(obj);
myh.onclick = function() {
var obj = iter.next();
// next
if (!obj.done) { // done
myh.innerText = obj.value; //
} else {
myh.innerText = " " //
}
}
3 Promise承諾
// promise
// : reslove reject
// : then catch
// : , 30 ,
//
var p=new Promise(function(reslove,reject){
setTimeout(()=>{
var n=Math.random();
if (n>0.5) {
reslove(" ");
}else{
reject(" 40 ");
}
},5000)
})
p.then(function(res){
console.log(res);//
}).catch(err=>{
console.log(err);// ,
})
//
//3 ,
//5 , ,
//2 , , 100 。。
// , ( )
function say(str,time,callback){
setTimeout(()=>{
console.log(str);
// callback undefined false
if (callback) {
callback();
}
},time)
}
say(" ",3000,function(){
say(" ",5000,function(){
say(" 100 ",2000)
})
})
3.2 Promiseによるコールバック関数の機能
//promise ,
function say(str, time) {
return new Promise((reslove, reject) => {
setTimeout(() => {
reslove(str);
}, time)
})
}
say(" ", 3000).then(res => {
console.log(res);
return say(" ", 5000).then(res => {
console.log(res);
return say(" 100 ", 2000).then(res => {
console.log(res)
})
})
})
```
## 3.3 Promise
```
<script src="../JS/js/jquery.min.js" type="text/javascript" charset="utf-8"/>
<script type="text/javascript">
function getapi(url) {
return new Promise((resolve,reject) => {
$.ajax({
url: url,
dataType: "jsonp",
success: function(res) {
resolve(res);
},
error: function(err) {
reject(err);
}
})
})
}
var urlA = "xxxxx";
var urlB = "xxxx";
getapi(urlA).then(add=>{
console.log(add);
return getapi(urlB)
}).then(date=>{
console.log(date)
}).catch(err=>{
console.error(err)
})
</script>
```
## 3.4 async
```
<script type="text/javascript">
function say(msg,time){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(msg);
resolve(msg)
},time)
})
}
async function doit(){
await say(" ",2000)
await say(" 180",2000)
await say(" ",2000)
}
doit()
</script>
## 3.5 Proxy
<script type="text/javascript">
//Proxy :
// class ,
var target={name:"jack",age:19}
//
var handler={
set(target,key,value){
console.log(key," ");
if (key=="age") {
if (value<=0) {
console.log(" ")
} else{
target[key]=value;
}
} else{
target[key]=value;
}
},get(target,key){
console.log(key," ")
}
}
var proxy=new Proxy(target,handler)
</script>
## 3.6 Reflect
<script type="text/javascript">
// ES6
// Proxy
var obj={name:"jack",age:19}
//
var name =Reflect.get(obj,"name");
console.log(name);//jack
//
Reflect.set(obj,"age",22);
//
var x=Reflect.has(obj,"leg");//false
</script>
```
</code></pre>
</div>
</div>
</div>
</div>