• es6 ajax


    简单的co用例:

    var co=require("co")
    
    class view{
    
    	constructor(){
    
    		co(function*(){
    			var p1=this.ajax1()
    			var p2=this.ajax2()
    			try{
    				var result=yield [p1,p2]
    				console.log(result)
    			}catch (err){
    				console.info(err)
    
    			}
    		}.bind(this))
    	}
    
    	ajax1(){
    		return new Promise(function(res,rej){
    			var t=1
    			setTimeout(function(){
    				t=t+1
    				res(t)
    			},2000)
    		})
    	}
    
    	ajax2(){
    		return new Promise(function(res,rej){
    			var t="this is the t2 errone"
    			setTimeout(function(){
    				rej(t)
    			},200)
    		})
    	}
    }
    
    module.exports=view
    

      co ajax

    var co=require("co")
    
    class view{
    	constructor(){
    		co(function*(){
    			var p1=this.ajax1()
    			var p2=this.ajax2()
    			try{
    				var result=yield [p1,p2]
    				console.log(result)
    			}catch (err){
    				console.info(err)
    
    			}
    			var p3=yield this.ajax3()
    			console.log(p3)
    		}.bind(this))
    	}
    
    	ajax1(){
    		return  $.ajax({
    				url: '/rulecycle/test1.json',
    				data: {naem:21},
    				type:"get"
    			})// yield 必须是promise 或者thunk函数,jquery ajax 1.7版本后本身会返回promise对象,不需要手动封装
    	}
    
    	ajax2(){
    		return  $.ajax({
    			url: '/rulecycle/test1.json',
    			data: {naem:21},
    			type:"get"
    		})
    	}
    	ajax3(){
    		return  $.ajax({
    			url: '/rulecycle/test1.json',
    			data: {naem:21},
    			type:"get"
    		})
    	}
    }
    
    module.exports=view
    

     es6 async,适用简单的异步逻辑 :

    class  view{
    	constructor(){
    		this.ajax1()
    	}
    	
    	async ajax1(){
    		try {
    			var resultData = await $.ajax({
    				url: '/rulecycle/test1.json',
    				type:"get"
    			})
    			console.info(resultData)
    		}catch (e){
    			console.info(e)
    		}
    	}
    	
    }
    
    module.exports=view
    

      附注 : babel 默认不支持generator,async特性, 需要在webpack入口文件引入

    require("babel-polyfill");
    

      

  • 相关阅读:
    ISEX安全期计算 V4.0 多国语言版女性安全期避孕计算实用工具软件
    FireARP防火墙 V3.1防局域网ARP攻击的软件
    asp.net页面字段绑定概述
    C# 删除、遍历指定目录下的所有指定文件、文件夹
    加入收藏、设为首页常用脚本
    分页加载数据Demo
    学习fragment的生命周期
    widget控件
    Menu菜单的代码和xml的创建
    WebView控件
  • 原文地址:https://www.cnblogs.com/breakdown/p/5212689.html
Copyright © 2020-2023  润新知