promise.then()使用笔记

demo1:

var MongoClient = require('mongodb').MongoClient;
var count = 0;

var promise1 = new Promise(function(resolve, reject) {
    MongoClient.connect('mongodb://localhost:27017/zuckjet', function(err, db) {
        if (db) {
            var collection = db.collection('users');
            collection.find({}).toArray(function(err, docs) {
                resolve(docs);
            });
        }
        if (err) {
            reject(err);
        }
    });
});
promise1.then(function(data) {
    setTimeout(function() {
        console.log(++count);
    }, 5000);
}).then(function(res) {
    console.log('second function begin to print');
    console.log(count);
})

上述代码输出结果为:
second function begin to print
0
1 //大概5秒后输出

dem02:

var MongoClient = require('mongodb').MongoClient;
var count = 0;

var promise1 = new Promise(function(resolve, reject) {
    MongoClient.connect('mongodb://localhost:27017/zuckjet', function(err, db) {
        if (db) {
            var collection = db.collection('users');
            collection.find({}).toArray(function(err, docs) {
                resolve(docs);
            });
        }
        if (err) {
            reject(err);
        }
    });
});

promise1.then(function(data) {
    new Promise(function(resolve, reject) {
        setTimeout(function() {
            console.log(++count);
            resolve(count);
        }, 5000);
    });
}).then(function(res) {
    console.log('second function begin to print');
    console.log(res);
    console.log(count);
})

上述代码输出如下:
second function begin to print
undefined
0
1 //大约5秒后输出

demo3:

var MongoClient = require('mongodb').MongoClient;
var count = 0;

var promise1 = new Promise(function(resolve, reject) {
    MongoClient.connect('mongodb://localhost:27017/zuckjet', function(err, db) {
        if (db) {
            var collection = db.collection('users');
            collection.find({}).toArray(function(err, docs) {
                resolve(docs);
            });
        }
        if (err) {
            reject(err);
        }
    });
});

promise1.then(function(data) {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            console.log(++count);
            resolve(count);
        }, 5000);
    });
}).then(function(res) {
    console.log('second function begin to print');
    console.log(res);
    console.log(count);
})

上述代码输出结果如下:
1 //大约五秒输出
second function begin to print
1
1

总结如下:
在形如:promise.then(...语句1...).then(...语句2...)中,

  1. 语句1中如果不使用return语句,语句2中无法接收到语句1中的参数

  2. 语句1中如果返回的是promise,语句2会等待语句1的resolve参数传递过来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值