【发布时间】:2016-06-02 21:23:18
【问题描述】:
你好,它是如此有线,我正在尝试执行异步功能,但是当我使用它时出现错误
使用 q
在 json 包上
"q": "^1.4.1"
TypeError: helper.setNextUserNewsAction(...).then is not a function
这是我的助手
module.exports = function() {
return {
setNextUserNewsAction: setNextUserNewsAction
}
}();
function setNextUserNewsAction(minutesToSet){
var defer = q.defer();
var x = minutesToSet;
var d = new Date();
var nextNews = new Date(d.getTime() + x*60000);
var minutes = nextNews.getMinutes();
var newMinutesToSet = 0;
for (var i = 0 , j = minutesToSet; j <= 60; i+=minutesToSet,j+=minutesToSet) {
if (minutes > i && minutes < j)
return newMinutesToSet = (i % 60);
}
nextNews.setMinutes(newMinutesToSet);
nextNews.setSeconds(00);
var NextNewsAction = {
AccessDate: nextNews,
Type: 'News',
Current: 1
}
defer.resolve(NextNewsAction);
return defer.promise;
}
当我在控制器中调用此函数时,它会向我发送该错误
var helper = require('../helpers/playlist');
helper.setNextUserNewsAction(15).then(function(action){
console.log(action);
},function(err){
console.log(err);
});
我也尝试过使用 try and catch 来执行此操作,但仍然出现同样的错误 好吧,这不是第一次,也不是我第一次使用 q 希望有人可以帮忙
【问题讨论】:
-
return newMinutesToSet = (i % 60) -
$q 给出同样的错误,那返回呢?它从循环中返回
-
返回不返回承诺,因此没有
.then。 -
它是从函数返回,而不是循环。你想休息;
-
@robertklep 可以解释一下吗?