add return value with async result
This commit is contained in:
@@ -13,8 +13,8 @@ public:
|
||||
virtual void injectGlobalJSFunction(QString name, QObject *function,
|
||||
QString property) = 0;
|
||||
|
||||
virtual void invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) = 0;
|
||||
virtual QString invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) = 0;
|
||||
};
|
||||
|
||||
#endif // INTERFACE_JSE_H
|
||||
|
@@ -96,18 +96,20 @@ DoricJSEngine::DoricJSEngine(QObject *parent) : QObject(parent) {
|
||||
}
|
||||
}
|
||||
|
||||
void DoricJSEngine::prepareContext(QString contextId, QString script,
|
||||
QString source) {
|
||||
mJSE->loadJS(packageContextScript(contextId, script), "Context://" + source);
|
||||
QString DoricJSEngine::prepareContext(QString contextId, QString script,
|
||||
QString source) {
|
||||
return mJSE->loadJS(packageContextScript(contextId, script),
|
||||
"Context://" + source);
|
||||
}
|
||||
|
||||
void DoricJSEngine::destroyContext(QString contextId) {
|
||||
QString DoricJSEngine::destroyContext(QString contextId) {
|
||||
QString script =
|
||||
QString(DoricConstant::TEMPLATE_CONTEXT_DESTROY).replace("%s", contextId);
|
||||
mJSE->loadJS(script, "_Context://" + contextId);
|
||||
return mJSE->loadJS(script, "_Context://" + contextId);
|
||||
}
|
||||
|
||||
void DoricJSEngine::invokeDoricMethod(QString method, QVariantList arguments) {
|
||||
QString DoricJSEngine::invokeDoricMethod(QString method,
|
||||
QVariantList arguments) {
|
||||
return mJSE->invokeObject(DoricConstant::GLOBAL_DORIC, method, arguments);
|
||||
}
|
||||
|
||||
|
@@ -26,11 +26,11 @@ public:
|
||||
|
||||
~DoricJSEngine();
|
||||
|
||||
void prepareContext(QString contextId, QString script, QString source);
|
||||
QString prepareContext(QString contextId, QString script, QString source);
|
||||
|
||||
void destroyContext(QString contextId);
|
||||
QString destroyContext(QString contextId);
|
||||
|
||||
void invokeDoricMethod(QString method, QVariantList arguments);
|
||||
QString invokeDoricMethod(QString method, QVariantList arguments);
|
||||
|
||||
DoricRegistry *getRegistry();
|
||||
};
|
||||
|
@@ -56,11 +56,13 @@ void DoricNativeJSE::injectGlobalJSFunction(QString name, QObject *function,
|
||||
}
|
||||
}
|
||||
|
||||
void DoricNativeJSE::invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) {
|
||||
QString DoricNativeJSE::invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) {
|
||||
if (mType == JSEType::V8) {
|
||||
v8Executor->invokeObject(objectName, functionName, arguments);
|
||||
return v8Executor->invokeObject(objectName, functionName, arguments);
|
||||
} else if (mType == JSEType::Native) {
|
||||
nativeExecutor->invokeObject(objectName, functionName, arguments);
|
||||
return nativeExecutor->invokeObject(objectName, functionName, arguments)
|
||||
.toString();
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
@@ -26,8 +26,8 @@ public:
|
||||
void injectGlobalJSFunction(QString name, QObject *function,
|
||||
QString property) override;
|
||||
|
||||
void invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) override;
|
||||
QString invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) override;
|
||||
};
|
||||
|
||||
#endif // NATIVE_JSE_H
|
||||
|
@@ -72,8 +72,8 @@ void V8Executor::injectGlobalJSFunction(QString name, QObject *function,
|
||||
injectFunctions(nullptr, name.toUtf8().constData(), true);
|
||||
}
|
||||
|
||||
void V8Executor::invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) {
|
||||
QString V8Executor::invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments) {
|
||||
std::string exception;
|
||||
v8::HandleScope handleScope(m_isolate);
|
||||
int valueSize = arguments.size();
|
||||
@@ -86,6 +86,9 @@ void V8Executor::invokeObject(QString objectName, QString functionName,
|
||||
functionName.toUtf8().constData(),
|
||||
valueSize, js_values, &exception);
|
||||
delete[] js_values;
|
||||
|
||||
std::string result = JS2String(value);
|
||||
return QString::fromUtf8(result.c_str());
|
||||
}
|
||||
|
||||
// private segment
|
||||
|
@@ -45,8 +45,8 @@ public:
|
||||
void injectGlobalJSFunction(QString name, QObject *function,
|
||||
QString property);
|
||||
|
||||
void invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments);
|
||||
QString invokeObject(QString objectName, QString functionName,
|
||||
QVariantList arguments);
|
||||
};
|
||||
|
||||
#endif // V8EXECUTOR_H
|
||||
|
Reference in New Issue
Block a user