gpt4 book ai didi

jquery - JavaScript/jQuery - 参数 "Array"- 可能吗?

转载 作者:行者123 更新时间:2023-11-28 16:36:43 25 4
gpt4 key购买 nike

进行一些客户端 JavaScript 开发,这需要我调用一个客户端 API,该 API 一次只接受一个参数(咳咳、facebook)。

基本上我需要调用 API 方法两次:

someFBApi.requestPerms('email')
someFBApi.requestPerms('publish_stream')

现在,我有一个用于此调用的包装函数,如下所示:

function requestPermission(permission, callback) {
someFBApi.requestPerms(permission, callback);
}

但问题是,我必须从各处调用函数“requestPermission”两次:

requestPermission('email', function(perm1granted) {
requestPermission('publish_stream', function(perm2granted) {
// do something with perm 1 and perm 2

我希望能够做到这一点:

requestPermissions('email,publish_stream', function(firstPerm,secondPerm) {
// do something with firstPerm, secondPerm

我知道我必须调用 FB API 两次(很好),但我希望“加倍”发生在该函数中(而不是到处)。知道我的意思吗?

所以,我会接受两种形式的答案:

  • 我可以传递一个字符串数组并迭代它们吗? (也许 JSON?)
  • 分隔字符串,然后在函数中拆分字符串。

请记住,该函数返回一个值,指示是否授予权限。因此它需要接受一个数组/分隔的字符串列表并返回一个数组/分隔的字符串列表。

解决方案越简单越好。 (jQuery 很好)

最佳答案

不要试图使用字符串解析解决方案。数组更干净、更简单:

/* note: permisions is expected to be an array */
function requestPermission(permissions) {
for (var i=0; i<permissions.length; i++) {
doSomething(permissions[i]);
}
}

现在,唯一的问题似乎是如何处理回调。我假设 API 是异步的,您需要这样的东西:

doSomething(when_done)->doSomething...(finally)->execute_callback

为此,您可以使用某种递归。但它实际上并不是传统意义上的递归,因为每个调用都是异步发生的。像这样的东西:

/* note: permisions is expected to be an array */
function requestPermission(permissions,callback) {
var p = permissions.shift();
var f = callback;
if (permissions.length > 0) {
// if this is not the last permission then
// call this function again in the callback:
f = function () {
requestPermission(permissions,callback);
}
}
someFBApi.requestPerms(p,f);
}

现在你可以像这样使用它:

requestPermissions(['email','publish_stream'],finalCallback);

关于jquery - JavaScript/jQuery - 参数 "Array"- 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3633075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com