对不起我的英语。我正在构建一个AngularJS应用程序(使用1.2.0 RC2),它使用摄像头录制视频。我用RecordRTC记录视频流。我得到了示例。当我和一条溪流一起工作时,一切都很好。但我不明白,如何在我的控制器中使用这些功能的承诺。
function startRecord(time,text,id){
var deferred = $q.defer();
navigator.getMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
navigator.getMedia(
{
audio: true,
video: video_constraints
}, function(stream) {
preview.src = window.URL.createObjectURL(stream);
preview.play();
recordAudio = RecordRTC(stream, {});
recordVideo = RecordRTC(stream, {
type: 'video'
});
recordAudio.startRecording();
recordVideo.startRecording();
$timeout(function() {
saveRecord(id).then(function(data){
if(data.status===200){
deferred.resolve();
$log.info("resolve");
}else{
deferred.reject();
$log.info("reject");
}
})
}, time*1000);
$scope.$apply(function(){
$timeout(function() {
addtext(text);
}, 100);
})
});
return deferred.promise;
}
var fileName;
function saveRecord(id) {
fileName = Math.round(Math.random() * 99999999) + 99999999;
recordAudio.stopRecording();
$scope.save(recordAudio.getBlob(), 'audio', fileName + '.wav',id);
recordVideo.stopRecording();
var save_promise = $scope.save(recordVideo.getBlob(), 'video', fileName + '.webm',id);
return save_promise;
};
$scope.save = function(blob,fileType,fileName,id) {
var save_promise= $http({
method: 'PUT',
url: "/api/videos/"+id,
headers: { 'Content-Type': false },
transformRequest: function (data) {
var formData = new FormData();
formData.append(fileType, fileName);
formData.append(fileType + '-blob', blob,fileName);
return formData;
},
data: { model: fileName, files: '' }
});
return save_promise;
};我可以创建手工链接承诺
var main = $q.defer();
main.promise
.then(function(questions){
startRecord(questions[0].time,questions[0].text,1)
.then(function(){
startRecord(questions[1].time,questions[1].text,2)
.then(function(){
startRecord(questions[2].time,questions[2].text,3)
})
})
});Main.resolve(问题);
但是我从api中得到的数组问题可以是不同的长度。
var questions = [
{id:1,time:10,text:'who are you?'},
{id:2,time:15,text:'where are do you live?'},
{id:3,time:15,text:'why do you live?'},
]我尝试了不同的版本承诺,但我的水平是非常低的JS。
发布于 2013-11-01 12:54:39
我为我的处境找到了示例。而且一切都很好。
var temp = $q.when({});
var questions = [
{id:1,time:10,text:'who are you?'},
{id:2,time:15,text:'where are do you live?'},
{id:3,time:15,text:'why do you live?'},
]
questions.forEach(function(value) {
temp = temp.then(
function(){
return startRecord(value.time,value.text,value.id);
}
);
}https://stackoverflow.com/questions/19720536
复制相似问题