Javascript设置超时与承诺

Javascript设置超时与承诺,javascript,angular,typescript,Javascript,Angular,Typescript,我需要在代码中包含承诺类型的操作,但不确定如何更改代码: 密码 问题 问题是,如果我的目标div滚动到很近,那么一切看起来都很好,但是如果我的div在滚动过程完成之前远离当前位置,那么类将从中删除,因此设计看起来不像预期的那么好 我需要的是在滚动完成后移动类的删除代码 逻辑: 添加类并滚动到目标DIV 滚动完成后,从目标DIV中删除该类 有什么想法吗?据我所知,scrollToPoint正在返回承诺 下面这个简单的解决方案怎么样 scrollTo(id) { var scrollDura

我需要在代码中包含承诺类型的操作,但不确定如何更改代码:

密码 问题 问题是,如果我的目标div滚动到很近,那么一切看起来都很好,但是如果我的div在滚动过程完成之前远离当前位置,那么类将从中删除,因此设计看起来不像预期的那么好

我需要的是在滚动完成后移动类的删除代码

逻辑:

添加类并滚动到目标DIV 滚动完成后,从目标DIV中删除该类 有什么想法吗?

据我所知,scrollToPoint正在返回承诺

下面这个简单的解决方案怎么样

scrollTo(id) {
    var scrollDuration = 800;
    var titleELe = document.getElementById(id);

    titleELe.classList.add('active');

    this.scrollMeElement.scrollToPoint(0, titleELe.offsetTop, scrollDuration).then(() => {
      titleELe.classList.remove('active');
    });
};
如果需要异步函数,则还可以添加外部承诺:

scrollTo(id) {
    return new Promise((resolve, reject) => {
        var scrollDuration = 800;
        var titleELe = document.getElementById(id);

        titleELe.classList.add('active');

        this.scrollMeElement.scrollToPoint(0, titleELe.offsetTop, scrollDuration).then(() => {
            titleELe.classList.remove('active');
            resolve();
        }, () => {
            reject();
        });
    });
};

问题:1。做这个-this.scrollMeElement.scrollToPoint0,titleELe.offsetTop,1000;方法可以采用回调方法吗?2.这个方法会返回什么吗?什么是活动类?@Subhadeep 1。不确定它是angular ViewChild方法@ViewChild'scrollMe',{static:false}scrollMeElement:any;2.不是我们提供的只是获取div数据,在本例中,我向div添加了id,这样它就可以找到特定的数据div@Ifaruki是我添加到div以添加stylesthanks的类名,今晚我将尝试您的代码并让您知道结果。
scrollTo(id) {
    return new Promise((resolve, reject) => {
        var scrollDuration = 800;
        var titleELe = document.getElementById(id);

        titleELe.classList.add('active');

        this.scrollMeElement.scrollToPoint(0, titleELe.offsetTop, scrollDuration).then(() => {
            titleELe.classList.remove('active');
            resolve();
        }, () => {
            reject();
        });
    });
};