2015-06-28 21 views
9

Thư viện bluebird dường như tự động sử dụng Promise::then cả hai tương đương với "map" và "flatMap" trên lời hứa, ví dụ như xem ví dụ này.Làm phẳng các lời hứa trong javascript

var Promise; 

Promise = require('bluebird').Promise; 

Promise.resolve(1).then(function(x) { 
    return Promise.resolve(x + 1); 
}).then(function(x) { 
    return console.log(x); // => `2` (not a promise) 
}); 

Promise.resolve(1).then(function(x) { 
    return x + 1; 
}).then(function(x) { 
    return console.log(x); // => `2` 
}); 

Promise.reject('hi').catch(function(x) { 
    return Promise.reject('hi2'); 
}).catch(function(x) { 
    return console.error(x); // => `hi2` (not a promise) 
}); 

Đây có phải là hợp đồng của API Prom6 es6 không? Ví dụ: tôi không đề cập đến hành vi làm phẳng này như ví dụ here hoặc here.

+0

Uh, những tài liệu đó * rất * thưa thớt. MSDN thậm chí không đề cập rằng 'sau đó' trả về một lời hứa: - / – Bergi

Trả lời

12

Đây có phải là hợp đồng của API Promise es6 không?

Vâng, đó là một hợp đồng thành lập bởi Promises/A+, và đã làm theo cách của mình từ đó vào đặc điểm kỹ thuật ES6. Bạn sẽ tìm thấy một số cuộc thảo luận here, herehere.

Các vấn đề liên quan