我剛剛開始在JavaScript中使用承諾,我想知道是否有一種方法來減少每個then
回調函數中的封裝樣板代碼?我覺得自己這樣做了很多,不知道是否有更好的方法鏈接承諾與多個參數
例如,在我的下方getSettings
功能無論是從數據庫(then
)或默認設置模型(catch
)返回設置模式。
var getSettings = function(instance, id, mode) {
return findByInstance(instance)
.then(function(data) {
return useModelFromData(data, id, mode);
})
.catch(function() {
return useDefaultModel(id, mode)
});
};
var useModelFromData = function(data, id, mode) {
var settings = data.model.settings;
applyFeatures(settings, id, mode);
return data.model;
};
var useDefaultModel = function(id, mode) {
var model = myModel.getDefaultModel();
applyFeatures(model.settings, id, mode);
return model;
};
我知道,如果當時的回調需要一個參數,並返回你可以做下面的快捷鍵的值:
get('some_url').then(JSON.parse).then(function(response) {
console.log("response", response);
});
有沒有什麼捷徑,我可以爲多個參數呢?
傳播如果你返回一個參數數組 - 看看傳播的藍鳥api:https://github.com/petkaantonov/bluebird/blob/master/API.md#spreadfunction-fulfilledhandler--function-rejectedhandler-- --promise – 2014-11-02 01:41:00