如何将Q.js与breeze一起使用
这是我第一次尝试使用q.js。它似乎工作,我有数据被检索,然后我的函数被调用。问题是数据没有传递给函数。这是语法问题还是我误用了Q如何将Q.js与breeze一起使用,breeze,q,Breeze,Q,这是我第一次尝试使用q.js。它似乎工作,我有数据被检索,然后我的函数被调用。问题是数据没有传递给函数。这是语法问题还是我误用了Q getCategories = function (observable) { var query = breeze.EntityQuery .from("Categories") .orderBy('Order'); Q(executeLocalQuery(query))
getCategories = function (observable) {
var query = breeze.EntityQuery
.from("Categories")
.orderBy('Order');
Q(executeLocalQuery(query))
.then(processResult);
function processResult(data) { //data = undefined
if (data.results.length)
return observable(data.results)
else
return observable(create('Item', { CategoryId: id, Name: 'Add12', ImageName: 'icon.png', Order: '999' })); //create add thumbnail if zero records
};
},
executeLocalQuery = function (query) {
manager.executeQuery(query.using(breeze.FetchStrategy.FromLocalCache))
.then(localFetchSucceeded)
.fail(queryFailed);
function localFetchSucceeded(data) {
return data;
}
},
解决了!在executeLocalQuery时不需要使用Q。在被调用的函数中进行更改。延迟等待data.results,然后解析延迟。然后,将一个承诺返回给调用方。然后调用方可以处理。然后检索数据
getCategories = function (observable) {
var query = breeze.EntityQuery
.from("Categories")
.orderBy('Order');
executeLocalQuery(query)
.then(processResult);
function processResult(data) {
if (data.results.length)
return observable(data.results)
else {
var addThumbnail = create('Category', { CategoryId: generateGUID(), Name: 'Add', ImageName: 'icon.png', Order: '999' });
observable(addThumbnail);
}
};
},
executeLocalQuery = function (query) {
var deferred = Q.defer();
manager.executeQuery(query.using(breeze.FetchStrategy.FromLocalCache))
.then(localFetchSucceeded)
.fail(queryFailed);
function localFetchSucceeded(data) {
deferred.resolve(data);
};
return deferred.promise;
},