我有ES6承诺。我想使用promise来序列化API请求。有交互式请求和后台请求。
var apiPromise = Promise.resolve();
...
// Interactive requests
router.get('/apiRequest', (req,res) => {
apiPromise.then(doSomeStuff)
.then((results) => {
res.send(results)
})
...
// Background requests
setInterval(() => {
if (apiPromise is resolved) {
apiPromise.then(doSomeStuff)
}
}, 1000*60)
我想将setInterval函数设置为.then()一个排队的请求,只有在已经解析了promise的情况下。如果它没有解决,只需等待下一个间隔检查。
最好的方法是什么?
更新:Bluebird.js提供同步检查:http://bluebirdjs.com/docs/api/isfulfilled.html