Я не очень хорошо разбираюсь в JavaScript, поэтому столкнулся с некоторыми проблемами в Frida JS API.Я вижу только Java.choose () async;это означает, что он перечисляет все живые экземпляры класса className
.Тем не менее, предостережение заключается в том, что он может вернуться рано даже до того, как перечисление закончится.В моем приложении мне требуется, чтобы функция (F) вызывала Java.choose()
return только в конце перечисления.Поскольку внутри onMatch()
, я заполняю список, который должен быть заполнен полностью, прежде чем F
вернется к своему вызывающему.Google говорит, что я могу использовать Promise
или await
для его сериализации.С моим ограниченным JS-fu я не смог заставить работать ни одно из решений.Может ли гуру JS вмешаться и бросить какой-нибудь фрагмент, чтобы спасти эту бедную душу?
Кроме того, другая проблема заключается в том, что я не являюсь специалистом по функциональному (управляемому событиями?) Программированию.Используется ли в качестве последнего средства в мире JS сериализация асинхронной функции?
const getObjectInstances = function(argument){
searchHeap(argument)
.then(function(class_instances){
console.log(class_instances);
//return class_instances;
})
.catch(function(error){
console.log("error");
})
}
const searchHeap = function(cls_name){
var class_instances = [];
Java.choose(cls_name, {
onMatch:function(instance){
console.log("Found instance" + instance);
class_instances.push(instance);
},
onComplete:function() {
console.log("search done");
}
});
}
Я хочу, чтобы searchHeap()
возвращал только после завершения перечисления.В противном случае вызывающая сторона получает неполный список class_instances[]
.Насколько сложно заставить это работать?Есть ли лучший способ добиться того же?