我需要运行函数"testfun 2次“,对于每个函数,我将有几个名称--例如testfun(5,global_user) // output 1,2,4,4,5,以及testfun(7,global_user) // output 9,10,11 --如何在运行两个函数之后将这两个数组放在一个数组中?
testfun(5, global_user);
testfun(7, global_user);
function testfun(groupId, myUser) {
var selectStr = "Title";
var itemsUrl = "https://info.com(" + groupId + ")/users" + "?" + selectStr + "&" + orderbyStr;
var executor = new SP.RequestExecutor;
executor.executeAsync(
{
url: itemsUrl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: loadTeamNames,
error: errorHandler
}
);
}
var arr = [];
function loadTeamNames(data){
var jsonObject = JSON.parse(data.body);
var results = jsonObject.d.results;
var hide_groups = false;
$(results).each(function(){
var name = $(this)[0].Name;
});
}谢谢
发布于 2016-01-27 00:04:25
由于testFun()使用异步方法,所以不能在运行两次之后立即执行任何操作,而不需要等待两个实例完成。这是通过承诺来完成的。
您可以使用$when()并从testFun()返回一个承诺。需要将loadTeamNames移动到testFun中才能做到这一点
在两个承诺都解决之前,$.when()是不会完成的
function testfun(groupId, myUser) {
var defer = $.Deferred();
var selectStr = "Title";
var itemsUrl = "https://info.com(" + groupId + ")/users" + "?" + selectStr + "&" + orderbyStr;
var executor = new SP.RequestExecutor;
executor.executeAsync(
{
url : itemsUrl,
method : "GET",
headers : {"Accept" : "application/json; odata=verbose"},
success : loadTeamNames,
error : errorHandler
}
);
function loadTeamNames(data) {
var jsonObject = JSON.parse(data.body);
var results = jsonObject.d.results;
var hide_groups = false;
$(results).each(function () {
var name = $(this)[0].Name;
});
// resolve deferred and pass data to be used in `$.when()`
defer.resolve(results);
}
return defer.promise;
}要使用
$.when(testfun(5, global_user),testfun(7, global_user)).done(function (results1, results2) {
//do what you need to with arrays results1 & results2
});在defer.reject()中添加errorHandler
发布于 2016-01-26 23:55:02
与JS
var mergedArray = outputOne.concat(outputTwo);与JQuery
var mergedArray = $.merge( $.merge( [], outputOne), outputTwo);发布于 2016-01-26 23:54:43
假设jsonObject.d.results已经是一个数组,您可以这样做:
arr.concat(results)
到目前为止,这将使数组与新结果连接起来。在loadTeamNames中包含该代码,testfun的每次运行都会将结果连接到当前数组。但是,不太确定在loadTeamNames中使用这些变量是为了什么。
https://stackoverflow.com/questions/35026169
复制相似问题