Як використовувати обіцянки ES6, як мені створити обіцянку, не визначаючи логіки її вирішення? Ось базовий приклад (деякі TypeScript):
var promises = {};
function waitFor(key: string): Promise<any> {
if (key in promises) {
return promises[key];
}
var promise = new Promise(resolve => {
// But I don't want to try resolving anything here :(
});
promises[key] = promise;
return promise;
}
function resolveWith(key: string, value: any): void {
promises[key].resolve(value); // Not valid :(
}
Це легко зробити за допомогою інших обіцяних бібліотек. Наприклад, JQuery:
var deferreds = {};
function waitFor(key: string): Promise<any> {
if (key in promises) {
return deferreds[key].promise();
}
var def = $.Deferred();
deferreds[key] = def;
return def.promise();
}
function resolveWith(key: string, value: any): void {
deferreds[key].resolve(value);
}
Єдиний спосіб, як я бачу це зробити, - це зберігати функцію вирішення десь у межах виконавця обіцянки, але це здається безладним, і я не впевнений, що це визначено, коли саме ця функція запускається - чи завжди вона запускається відразу при побудові?
Дякую.