小编Jes*_*ssy的帖子

JavaScript永远悬而未决的承诺是不是很糟糕?

假设我有一个承诺myProm,并说我有成功和错误处理程序调用onSuccessonError.

每当我的诺言需要超过10秒才能完成,我想要一个timeoutHandler被执行的函数,但如果发生这种情况,既onSuccess不会也不onError应该执行.(同样,如果是onSuccess或者onError运行,我不希望我timeoutHandler被执行.)

我已经为此提出了以下代码段.

new Promise((suc, err) => {
    let outOfTime = false;
    const timeoutId = window.setTimeout(() => {
        outOfTime = true;
        timeoutHandler();
    }, 10000);
    myProm.then(
        (...args) => {
            if (!outOfTime) {
                window.clearTimeout(timeoutId);
                suc(...args);
            }
        },
        (...args) => {
            if (!outOfTime) {
                window.clearTimeout(timeoutId);
                err(...args);
            }
        }
    );
}).then(onSuccess, onError);
Run Code Online (Sandbox Code Playgroud)

但是,如果超时,我新定义的承诺将永远悬而未决.这会产生任何负面影响吗?例如,运行时无法清除Promise对象,因为它仍处于挂起状态(或沿着这些行的某些内容).

javascript promise ecmascript-6 es6-promise

9
推荐指数
1
解决办法
819
查看次数

如何在Laravel 4中覆盖View :: make()?

我想覆盖View::make()Laravel中的默认方法,该方法可用于向用户返回视图响应.

(我认为)我已经发现这个方法存储在里面Illuminate\View\Factory.php,我一直在阅读有关IoC容器的内容,同时尝试使用一些 类似的 教程使其工作,但它只是不起作用.

我已经创建了一个文件App\Lib\MyProject\Extensions\View\Factory.php,其中包含以下代码:

<?php namespace MyProject\Extensions\View;

use Illuminate\View\Factory as OldFactory;

class Factory extends OldFactory {

    public static function make() {
        // My own implementation which should override the default
    }

}
Run Code Online (Sandbox Code Playgroud)

MyProject文件夹自动加载与作曲家.但是,Factory每当调用View(特别是View::make())静态方法时,我都不知道如何使用该类的"修改"版本.一些帮助会很棒!

谢谢!

php class core extend laravel

3
推荐指数
1
解决办法
2218
查看次数

标签 统计

class ×1

core ×1

ecmascript-6 ×1

es6-promise ×1

extend ×1

javascript ×1

laravel ×1

php ×1

promise ×1