相关疑难解决方法(0)

如何从setTimeout做出承诺

这不是一个现实世界的问题,我只是想了解如何创造承诺.

我需要了解如何为一个不返回任何内容的函数做出承诺,比如setTimeout.

假设我有:

function async(callback){ 
    setTimeout(function(){
        callback();
    }, 5000);
}

async(function(){
    console.log('async called back');
});
Run Code Online (Sandbox Code Playgroud)

如何创建一个async可以在setTimeout准备好后返回的承诺callback()

我想包装它会带我到某个地方:

function setTimeoutReturnPromise(){

    function promise(){}

    promise.prototype.then = function() {
        console.log('timed out');
    };

    setTimeout(function(){
        return ???
    },2000);


    return promise;
}
Run Code Online (Sandbox Code Playgroud)

但我想不到这一点.

javascript settimeout promise

77
推荐指数
4
解决办法
7万
查看次数

Chrome:在微任务执行期间调用'alert()'已弃用,将被删除

在我的网络应用上工作时,特别是文件上传,Chrome在我发出提醒后显示警告:

在微任务执行期间调用'alert()'已弃用,将于2016年9月左右在M53中删除.有关详细信息,请参阅https://www.chromestatus.com/features/5647113010544640.

但是我认为在我的情况下,这个电话是合理的,并且有点担心一旦M53发布我的代码将无法工作.请注意,我没有使用警报运送到生产中,但是对于测试它非常有价值.

情况:

我正在使用react开发我的应用程序.我正在使用axios来做http请求.基本上http-post看起来像这样:

axios.post("/upload/", data)
    .then((response: any) => {
        callback(undefined);
    })
    .catch((error: any) => {
        callback(error);
    });
Run Code Online (Sandbox Code Playgroud)

然后在调用方法中,如果出现错误,我会弹出一个警告,这样我就可以确定测试人员/开发人员会收到通知.有点像:

this.service.uploadFile((error: any) => {
    if (error) {
        console.log(error);
        alert("An error occured");
        return;
    }

    this.onUploadCompleted()
});
Run Code Online (Sandbox Code Playgroud)

这是当chrome显示警告时.

首先,我想知道警告是否合理,因为警报会在请求完成并且返回错误之后显示.所以我很确定它不会阻挡任何东西.

如果它是合理的,可以做什么,所以我可以显示警报?

javascript ajax google-chrome axios

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

标签 统计

javascript ×2

ajax ×1

axios ×1

google-chrome ×1

promise ×1

settimeout ×1