建议和反馈

请填写你的反馈内容

问答 > 区块链应用 > 问答详情
求助中

重复异步功能直到为真10LK

我有一个async检查订单状态函数(checkOrderStatus())。我想重复此函数,直到它返回FILLEDCANCELED,然后在另一个函数中使用此返回值来决定继续还是停止代码。每个订单在成为FILLED之前都会经历不同的状态CANCELED,因此需要重复执行此checkOrderStatus()功能(这是一个API调用)。

我现在要的是重复checkOrderStatus()功能:

const watch = filter => {
    return new Promise(callback => {
        const interval = setInterval(async () => {
            if (!(await filter())) return;
            clearInterval(interval);
            callback();
        }, 1000);
    });};const watchFill = (asset, orderId) => {
    return watch(async () => {
        const { status } = await checkOrderStatus(asset, orderId);
        console.log(`Order status: ${status}`);
        if (status === 'CANCELED') return false;
        return status === 'FILLED';
    });};

然后watchFill(),我从另一个函数进行调用,在该函数中,我想检查其返回值(truefalse),如果继续执行代码,true或者如果停止执行false

const sellOrder = async (asset, orderId) => {
    try {
        const orderIsFilled = await watchFill(asset, orderId);
        
        if (orderIsFilled) {
            //… Continue the code (status === 'FILLED'), calling other async functions …
        }
        else {
            //… Stop the code
            return false;
        }
    }
    catch (err) {
        console.error('Err sellIfFilled() :', err);
    }};

但是,这不起作用。我可以看到的状况通过终端正在更新console.logwatchFill(),但它永远不会停止,最重要的是,在价值orderIsFilled变量sellOrder()没有更新,无论价值被返回watchFill()是。

我该怎么办?

非常感谢你


2021-03-28
0
请先登陆或注册

暂无回答!

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 2
  • 7
  • 3
  • 4
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励