解决延迟问题无法按预期进行
Resolving deferred does not work as expected
我有以下方法,用于查询documentdb中的文档并将结果返回给调用者。
fetch: function(query) {
var fetchDeferred = q.defer();
client.queryDocuments(collectionLink, query).toArray(function(err, docs) {
console.log("Fetch return values - " + JSON.stringify(err) + " - " + JSON.stringify(docs));
if (err) {
fetchDeferred.reject(err);
} else {
fetchDeferred.resolve(docs);
}
});
return fetchDeferred.promise;
}
当我调用fetch方法时,我看到以下结果
Fetch return values - undefined - []
所以我知道documentDb返回数据。现在,根据我的条件,fetchDeferred.resolve应该解决该承诺。
这个函数是从获取路由处理程序调用的,如下所示
exports.get = function(request, response) {
var userId = '100';
var querySpec = {
query: 'SELECT * FROM root r WHERE r.id = ''user_'' + @id',
parameters: [{
name: '@id',
value: userId
}]
};
docdb.fetch(querySpec).then(function(result){
response.send(statusCodes.OK, {data: result})
}, function(error){
response.send(statusCodes.OK, {data: error});
});
};
现在,当我调用路线时,我应该得到如下的结果
{data:[]}
但是成功函数没有被调用:(知道为什么会发生这种情况吗?
注入$timeout
服务并尝试这样写:
client.queryDocuments(collectionLink, query).toArray(function(err, docs) {
console.log("Fetch return values - " + JSON.stringify(err) + " - " + JSON.stringify(docs));
$timeout(function() {
if (err) {
fetchDeferred.reject(err);
} else {
fetchDeferred.resolve(docs);
}
});
});
相关文章:
- jQuery通过步骤的自排队循环来解决延迟问题
- 我在向jquery脚本添加延迟时遇到问题
- 解决延迟问题无法按预期进行
- 鼠标输入事件上的jQuery延迟出现问题
- 顶级/下级菜单上的隐藏()延迟问题,但当鼠标再次进入时取消隐藏()
- j查询周期延迟问题
- Jquery .each 延迟问题
- jQuery如何解决<脚本延迟>问题
- 延迟加载或图像加载序列问题
- 解决所有延迟问题后执行某些操作
- 使用jQuery自定义JS Confirm Modals.延迟和基于按钮的返回值问题
- Websocket通信延迟问题
- Jquery延迟问题
- jQuery Carousel插件按钮延迟问题
- 返回确认延迟问题
- 向页面添加大量元素后出现的延迟问题
- HTML5画布javascript延迟问题
- Javascript setTimeout存在0延迟问题
- 使用鼓机的设置超时解决延迟问题
- touchStart 事件和查询命令状态延迟问题