Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多个异步回调调用_Javascript_Asynchronous_Es6 Promise - Fatal编程技术网

Javascript 多个异步回调调用

Javascript 多个异步回调调用,javascript,asynchronous,es6-promise,Javascript,Asynchronous,Es6 Promise,我遇到多个异步调用的问题。我有三项任务要申请。首先,我从第一个请求中获取一些json数据。然后,当该请求完成后,我从另一个服务向getMovie Trailes发出多个请求,并将该数据合并到第一个响应中的每个对象。当所有这些都完成后,我想将数据写入json文件。很简单,但我没有兑现承诺 这是我的密码 MovieService.getContent(config.url + '?key=' + config.moviekey).then(function(data) { var m

我遇到多个异步调用的问题。我有三项任务要申请。首先,我从第一个请求中获取一些json数据。然后,当该请求完成后,我从另一个服务向getMovie Trailes发出多个请求,并将该数据合并到第一个响应中的每个对象。当所有这些都完成后,我想将数据写入json文件。很简单,但我没有兑现承诺

这是我的密码

    MovieService.getContent(config.url + '?key=' + config.moviekey).then(function(data) {
    var movies = JSON.parse(data);
    var cnt = 0;
    var len = movies.length;
    var results = [];

    for (var i = 0; i < movies.length; i++) {
        var imdbid = movies[i].ids.imdb;

        (function (i, imdbid) {
            MovieService.getContent(config.themoviedburl + 'tt' + imdbid + '/videos?api_key=' + config.themoviedbkey).then(function (data) {
                len--;
                movies[i].trailers = JSON.parse(data);
                if (len === 0) { 
                    FileService.writeToJson(JSON.stringify(movies), config.showtimesfilepath);
                }
            });
        })(i, imdbid);
    };
});
MovieService.getContent(config.url+'?key='+config.moviekey)。然后(函数(数据){
var movies=JSON.parse(数据);
var-cnt=0;
var len=movies.length;
var结果=[];
for(var i=0;igetContent()
中有任何拒绝,则
Promise.all()
将立即使用拒绝值拒绝,同时放弃所有其他承诺。本例中的反模式通过在拒绝时进行解析来避免这种情况的发生,允许FileService.writeToJson()在Promise.all()中执行。这就是
返回的内容。…catch(function(){/*ignore*/})
也可以,无需使用反模式。或者看看@Bergi-啊,是的!你说得对。谢谢。:)我已经更正了我的答案。Thx我很多时候都使用中间方法,但是如果一个或多个异步响应失败了怎么办,但是我仍然需要无规则地写入文件。处理这个问题最好的办法是什么@jfriend00@jonjonson-OP没有准确描述当其中一个请求中出现错误时他们想要做什么。正如我的回答所说,他们可以在
.getContent()
上提供错误处理程序,并在那里提供他们想要的任何行为,因为在那里提供错误处理程序将“处理”那里的错误并防止其传播。我也在我的代码示例中添加了特定的信息。