Я пытаюсь получить значение свойства, а затем выполнить другую логику со значением, но я хотел бы поддержать это свойство, являющееся обещанием. Каков наилучший способ поддержать это, все еще поддерживая не обещания?Как я должен быть агностик о том, что обещание?
// source can be an array of strings, a function, or a Promise
var source = this.cellProperties.source
if (typeof source === 'function') {
sourceResult = source()
} else {
sourceResult = source
}
sourceResult.then(function (options) {
// perform logic with the value
// but functions and strings don't have a `.then` property
})
Лучшая идея, которую я придумал был:
if (sourceResult.then === undefined) {
sourceResult.then = function (callback) {
callback(sourceResult)
}
}
Но должен быть лучше, чем подход, что, нет?
Просто сделайте 'sourceResult' обещание, используя' Promise.resolve'. – Bergi
Честно говоря, реальное решение здесь заключается в том, чтобы не допускать трех разных типов ввода в функции. Определенно, не идете с идеей реализации обещаний (в некоторых случаях это разрывается). –