gpt4 book ai didi

javascript - 如何在我的项目中编写异步代码

转载 作者:行者123 更新时间:2023-11-28 08:55:34 24 4
gpt4 key购买 nike

您能否提供一个使此代码异步的示例1)我必须通过 $http.get 函数从服务器读取文件2)读取文件到数组3)处理它(重建它)4) 并显示每个操作的进度条

所以代码是:

$http.get(filename).success(function (data) {
words = data.split(/\n| /);
reBuild(words) //this action takes at least 5 seconds
Process(words) // this action takes at least 4 seconds
})

我想让它异步,我不想在执行重建和进程时卡住我的线程知道如何做到这一点吗?

最佳答案

假设“reBuild”必须在“Process”运行之前完成,在我看来,处理它的最佳方法是让 reBuild 和 Process 函数返回 Promise。 Promise 是一种处理异步事件的 javascript 方式 - http://docs.angularjs.org/api/ng .$q .

例如,对于您的 reBuild 方法,而不是像这样:

var reBuild = function(words) {
// 5 second operation here
return words;
}

这样做:(您需要将 $q 和 $timeout 服务注入(inject) Controller 才能使其工作)

var reBuild = function(words) {
var deferred = $q.defer();

$timeout(function() {
// do 5 second operation
deferred.resolve(words);
});

return deferred.promise;
}

然后在你的 Controller 中你可以这样做:

$http.get(filename).success(function (data) {
words = data.split(/\n| /);
reBuild(words).then(function(reBuiltWords) {
Process(reBuiltWords);
});
})

关于javascript - 如何在我的项目中编写异步代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18546936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com