javascript - 在 JSConext 的方法中传递 block
<p><p>我正在使用 JSContext 并创建如下所示的函数</p>
<pre><code>context[@"callOriginalMethod"] = ^(NSArray* arr, closureBlock block)
{
block(arr);
};
</code></pre>
<p>closureBlock 定义为</p>
<pre><code>typedef void (^closureBlock)(NSArray*);
</code></pre>
<p>然而,当我从 JS 调用 <code>callOriginalMethod</code> 时,我得到这个错误:
<code>TypeError:callOriginalMethod 不是函数。 (在'callOriginalMethod(a, globalCl)'中,'callOriginalMethod'是NSBlock的一个实例)</code></p>
<p>当我从 <code>callOriginalMethod</code> 中删除 <code>closureBlockblock </code> 时,一切都按预期工作。问题是什么?我们该如何解决?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>这是你可以做到的:</p>
<pre><code>context[@"callBlock"] = ^(JSValue *block)
{
;
};
</code></pre>
<p>在 JS 中</p>
<p><code>callBlock(a, function(a){closure(a);})</code></p></p>
<p style="font-size: 20px;">关于javascript - 在 JSConext 的方法中传递 block ,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/41168577/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/41168577/
</a>
</p>
页:
[1]