javascript - js如何实现函数的连续调用

查看:142
本文介绍了javascript - js如何实现函数的连续调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

比如我在写自定义过滤的时候使用这样的语法

var filters = angular.module('filters', []);
filters.filter('quality', function() {
    
}).filter('level', function() {
    
}).filter('RMB', function() {
   
}).filter('button', function() {

});

请问如何定义实现类似
a().b().c()或者a().a().a()这样的调用

解决方案

非异步的链式调用

var obj = {};
    obj.func1 = function(){
        console.log('func1');
        return this;
    };
    obj.func2 = function(){
        console.log('func2');
        return this;
    };
    obj.func1().func2();

异步的链式调用(Promise)

function runFunc1(){
        var p = new Promise(function(resolve,reject){
            //异步操作
            setTimeout(function(){
                console.log('success runFunc1');
                resolve('数据1');
            },5000);
        });
        return p;
    }

    function runFunc2(){//如果promise没有运行在函数内部会立即执行
        var p = new Promise(function(resolve,reject){
            //异步操作
            setTimeout(function(){
                console.log('success runFunc2');
                resolve('数据2');
            },5000);
        });
        return p;
    }

    runFunc1()
    .then(function(data){
        console.log(data);
        return runFunc2();
    })
    .then(function(data){
        console.log(data);
    })

这篇关于javascript - js如何实现函数的连续调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆