У меня есть следующий пример кода.Обработка зависимостей JavaScript Promise
var Promise = require('bluebird');
var model = function (object) {
this.name = object.name;
};
model.prototype.download = function() {
var self = this;
return new Promise(function (resolve, reject) {
setTimeout(function() {
resolve();
}, Math.random() * 100)
});
};
model.prototype.process = function() {
var self = this;
return new Promise(function (resolve, reject) {
setTimeout(function() {
console.log('processed: ', self.name);
resolve();
}, Math.random() * 100)
});
};
var models = [new model({
name: 'user',
requires: ['company']
}), new model({
name: 'address',
requires: ['user', 'company']
}), new model({
name: 'company'
})];
Promise.map(models, function (model) {
return model.download()
.then(function() {
return model.process();
});
});
Требуемая мощность этого кода:
processed: company // 1rst, because company model has no dependencies
processed: user // 2nd, because user requires company
processed: address // 3rd, because address requires company and user
мне нужно управлять каким-то зависимости. Функция model.process
должна запускаться только тогда, когда все функции process
требуемых моделей модели уже разрешены.
Это всего лишь небольшой пример, у меня много моделей с несколькими зависимостями.
Мне нужно активировать функции download
синхронно и активировать функцию process
как можно скорее. Я не могу дождаться, когда все загрузки будут решены, и позвоните по телефону process
.
Каковы Ваши проблемы? Вы хотите использовать обещание справиться с вышеуказанной ситуацией? И, пожалуйста, предоставьте дополнительную информацию о «Я не могу дождаться, когда все загрузки будут решены и вызовет процесс после». – Dnyanesh
Ваш код ничего не показывает о «моделях модели, которые нужны модели». –
Эй @ Днянеш, спасибо за ваш ответ, я обновил свой пример, чтобы сделать его более понятным. – Adam