Прервать выполнение скрипта v8 внутри собственной функции

Я использую v8 и spidermonkey из программ на C ++. В spidermonkey легко остановить выполнение, вы просто возвращаете FALSE в любом из собственных методов, реализованных в C ++.
Но я не вижу, как сделать то же самое в v8.

Handle<Value> enough(const v8::Arguments& a) {
// want to tell v8, that execution is not needed to continue.
return v8::Undefined();
}

Может быть, вернуть что-то конкретное, или установить некоторую переменную, или вызвать функцию v8, или отправить сообщение, или бросить и исключение, какая-нибудь идея?

1

Решение

Я не совсем уверен, что вы имеете в виду под «прерыванием» в данном случае. Но я дам ему попытку с моим ответом:

Вы можете либо вернуть значение из вашей функции C ++ на ранней стадии (return v8::False()) пропустить выполнение другого кода внутри той же функции или вызвать исключение JavaScript с v8::ThrowException(...),

И вы можете использовать v8::V8::TerminateExecution(), Это прервет выполнение в текущем изоляторе / потоке. Способ v8 делает это, генерируя неуловимое исключение (на земле JavaScript). Вы все еще можете использовать v8::TryCatch обрабатывать завершение из вашего кода C ++.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]