所以我在angularjs服务器中有一个方法,它调用一个方法,为数组中的每个方法返回一个promise。我使用下划线_each在数组中循环。我想等到整个数组被处理后,再调用方法中的最后一行代码...
所以...
function ProcessCoolStuff(coolStuffs)
{
var stuff = [];
_.each(coolStuffs, function(coolStuff)
{
//Some method using $q to return
makeStuffCooler(coolStuff).then(function(coolerStuff)
{
stuff.push(coolerStuff);
});
});
//Maybe Call a Display Method, or call event ect..
ShowAllMyCoolStuff(stuff);
}
这当然行不通。。循环完成并调用“ShowAllMyColStuff”,然后对每个项目执行MakeSuffCooler。所以与async方法交互的正确方法是什么,这样我的ShowAllMyColStuff方法将等待集合填充完成?这可能是我在$q和promise方面缺乏经验,但我被卡住了。提前谢谢。
在我读了问题和相应的答案之后,我走上了正确的轨道。谢谢你!但在最后的工作解决方案中,我又花了一个小时让所有用例都工作起来。这就是为什么我想分享一个代码示例,其中包含链式promise,包括等待解决的promise数组。
用例后台是上传后的服务器端(nodeJs)文件导入。我使用promise来返回适当的http状态和结果。
readFile: function (fileName) {
if (fileName) {
var deferred = Q.defer();
var self = this;
converter({input: fileName}, function (error, userData) {
if (error) {
deferred.reject(error);
}
self.storeUsers(error, userData)
.then(function (success) {
if (success) {
deferred.resolve(success)
}
})
.fail(function (error) {
deferred.reject(error)
});
});
return deferred.promise;
}
},
storeUsers: function (error, data) {
return Q.all(_.map(data, function (users, emailAddress) {
var deferred = Q.defer();
userRepository.findUserByEmail(emailAddress, function (user) {
//...
user.save(function (error) {
if (error) {
deferred.reject(error);
} else {
deferred.resolve(emailAddress);
}
});
});
return deferred.promise;
}));
}
希望这也有帮助!
干杯,本
$q.all([promise1,promise2,promise3,etc])
.then(function(results){
alert("This alert will happen after all promises are resolved.");
})
您希望使用$q.all
,它接受一系列promise。因此,使用map
而不是each
,并将结果传递给$q.all()
,这会给您一个等待所有结果的promise。您甚至不需要手动填充的数组,只需要使用新promise的分辨率值即可。
function processCoolStuff(coolStuffs) {
return $q.all(_.map(coolStuffs, makeStuffCooler));
}
processCoolStuff(…).then(showAllMyCoolStuff);
underline(resource $resourchHandle, Format::const $style): \Vtiful\Kernel\Format 示例 $format = new \Vtiful\Kernel\Format($fileHandle); $underlineStyle = $format->underline(Format::UNDERLINE_SI
>>> class MyClass(): ... def __init__(self): ... self.__superprivate = "Hello" ... self._semiprivate = ", world!" ... >>> mc = MyClass() >>> print mc.__superprivate Traceback (most recen
问题内容: 看起来XStream(com.thoughtworks.xstream-> xstream 1.4.2)正在以一种非常奇怪的方式处理元素和属性名称中的下划线。我需要从属性中带有下划线的客户那里获取并解析xml。这是我第一次尝试使用XStream,但由于希望避免所有丑陋的xml解析,我有些失望。 在这里,我提供了一个小的测试样本来阐明这一行为。最后一个例子显示了我的问题。 这个输出 现在
问题内容: 我正在尝试使JLabel带有下划线。我到处搜寻,但一无所获。即使在属性中,也没有为JLabel下划线的选项。我能做什么? 问题答案: 要么
我已经实现了Custom edittext,具有自定义样式: 这是屏幕: 这里只有光标,现在当我再次选择光标时,我得到如下结果: 我不想要光标下方的黄色下划线。 这是在Moto g4和android 7.0中测试的。 编辑还在错误上下划线,如果我seterror和文本不可见的错误:
本文向大家介绍python中单下划线和双下划线分别是什么?相关面试题,主要包含被问及python中单下划线和双下划线分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 name:一种约定,python内部的名字,是用来与用户自动以的名字区分开,防止冲突