Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类jQuery/TypeScript/JavaScript中的延迟语句_Javascript_Jquery_Typescript_Class_Async Await - Fatal编程技术网

类jQuery/TypeScript/JavaScript中的延迟语句

类jQuery/TypeScript/JavaScript中的延迟语句,javascript,jquery,typescript,class,async-await,Javascript,Jquery,Typescript,Class,Async Await,我已经从严肃的JavaScript开发中离线好几年了。我现在正在重新投入,但由于一件看似琐碎的基本事情,我已经被挂了大约一天了 这是在TypeScript中开发的,使用ES2019传输到JavaScript,因此如果有帮助的话,可以使用现代的铃铛和口哨 我想将我编写的一些函数转换成一个类,该类查询、处理并最终存储来自DB的类中的数据。这是对其中一个函数流的提取 此基本(非类)版本适用于 var setSetData = $.Deferred(); // activates when an arr

我已经从严肃的JavaScript开发中离线好几年了。我现在正在重新投入,但由于一件看似琐碎的基本事情,我已经被挂了大约一天了

这是在TypeScript中开发的,使用ES2019传输到JavaScript,因此如果有帮助的话,可以使用现代的铃铛和口哨

我想将我编写的一些函数转换成一个类,该类查询、处理并最终存储来自DB的类中的数据。这是对其中一个函数流的提取

此基本(非类)版本适用于

var setSetData = $.Deferred(); // activates when an array of ID's is converted from the url params string into actual DB ids of elements in those sets
    
// takes in a string of URL params, and in PHP returns index IDs to objects that belong to a set of objects
//names is an array of names derived from a URL param variable like set1,set2,set3
function getIDsBySet(names:Array<string> | false){
    var dbRecord = $.ajax({
        url: "./src/php/getIdsBySet.php",
        type: 'POST',
        dataType: "json",
        data: {
            sets:names,
        }, 
        success: function(data:JSON){
            return setSetData.resolve(data);
        }
    });
}

function addToPriorityLoader(ids:Array<number>){
// processing code here, which does involve further DB query, but this should suffice as an example to get me back on track
}
       
//When we have a set specified in the URL send these DB ids to the priority loading lane
$.when(setSetData).then(addToPriorityLoader), 
function(failed:object){
    console.log("error in processing set list", failed);
};
var setSetData=$.Deferred();//当ID数组从url参数字符串转换为这些集合中元素的实际DB ID时激活
//接收URL参数字符串,在PHP中,返回属于一组对象的对象的索引ID
//names是从URL参数变量(如set1、set2、set3)派生的名称数组
函数getIDsBySet(名称:Array | false){
var dbRecord=$.ajax({
url:“./src/php/getIdsBySet.php”,
键入:“POST”,
数据类型:“json”,
数据:{
集合:名称,
}, 
成功:函数(数据:JSON){
返回setSetData.resolve(数据);
}
});
}
函数addToPriorityLoader(id:Array){
//在这里处理代码,这确实涉及到进一步的数据库查询,但作为一个例子,这应该足以让我回到正轨
}
//当我们在URL中指定了一个集合时,将这些DB ID发送到优先级加载通道
$.when(setSetData).then(addToPriorityLoader),
函数(失败:对象){
console.log(“处理集合列表出错”,失败);
};

你们到底是怎么把它放到TypeScript可以编译然后运行的类中的呢?我真的花了大约一天的时间断断续续地尝试不同的方法。它们都会因为严格模式类型而失败(当严格模式类型输入到我的VS代码编译器中时,wait语句会导致无休止的麻烦),或者它们完全不会编译,在编译过程中会失去作用域,或者它们编译得很好,但在浏览器中,当启动时控制台中的错误不会停止。

只需将每个函数放入一个方法中,
$.Deferred
作为字段,而
$.when
作为另一个函数。确保在所有地方使用相同的名称作为延迟字段名(在共享代码中,您有
nodesSetData
setSetData
)。也就是说,您可能希望了解Promises和Fetch API的进展情况,而不是继续使用jQuery。“因此现代的铃声和口哨是可用的”-然后首先摆脱jQuery并使用
Promise
s(包括
async
/
wait
)如果您以前有
函数
s,但没有使用
new
,那么现在就没有理由切换到
。保留普通函数。在最后一条语句中,
.then()
调用后,逗号和函数表达式做了什么?这看起来像是一个语法错误。