2017年9月6日水曜日

jQuery promise と deferred の利用例

jQuery promise と deferred の簡単な利用例です。このままコピー & ペーストで動作します。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
    <input id="btn1" type="button" value="click me"/>

    <script>
        var task1 = function() {
            var dfd = $.Deferred();
            setTimeout(function() {
                console.log("1つ目の処理");
                dfd.resolve();
            }, 2000);
            return dfd.promise();
        };

        var task2 = function(){
            console.log("2つ目の処理");
        }

        $(function() {
            $('#btn1').on('click', function() {

                // promise を返す関数の後に、then や done で次に実行したい関数をつなげる
                task1().then(task2);
                
                //こういう書き方が多いかも
                // var promise = task1();
                // promise.then(task2);
            });
        });
    </script>
</body>
</html>

0 件のコメント:

コメントを投稿