Here is my situation:
fetchData(foo).then(result => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(result + bar); }, 0) }); }).then(result => { return new Promise((resolve, reject) => { setTimeout(() => { resolve( result + woo); }, 0) }); }).then(result => { setTimeout(() => { doSomething(result); }, 0) }); Where each setTimeout is a different async operation using the callback pattern.
It is really painfull to wrap each function inside a promise, I feel like the code should look more like this:
fetchData(foo).then(result => { setTimeout(() => { return result + bar; }, 0) }).then(result => { setTimeout(() => { return result + woo; }, 0) }).then(result => { setTimeout(() => { doSomething(result); }, 0) }); Obviously this doesn't work.
Am I using Promises right? Do I really have to wrap all existing async function in promises?
EDIT:
Actually I realize my example was not totally reprensentative of my situation, I did not make it clear that the setTimeout in my example is meant to reprensent en async operation. This situation is more representative of my situation:
fetchData(foo).then(result => { return new Promise((resolve, reject) => { asyncOperation(result, operationResult => { resolve(operationResult); }, 0) }); }).then(result => { return new Promise((resolve, reject) => { otherAsyncOperation(result, otherAsyncResult => { resolve( otherAsyncResult); }, 0) }); }).then(result => { doSomething(result); });
pifythat can help you promisify existing callback-based async functions. Also, a reasonable number of packages offer both promise and callback support for their async functions (when you don't pass a callback function, they return a promise). But I can't say if this'll apply to your situation.bluebirdis very simple, and behaves just like native Promises but more friendly to node style callbacks. linksetTimeoutinside every.then?.then(result => new Promise(resolve => asyncOperation(result, resolve, 0)))No need to be more verbose than necessary. Don't put anything but the smallest code necessary inside promise constructor executor functions.